[英]Should I be unit testing my bootstrapper and if so how?
我的bootstrapper继承自UnityBootstrapper,我试图对它进行单元测试并失败。 我想测试在ConfigureModuleCatalog方法中添加了正确的模块。 我应该尝试对此进行单元测试吗?如果是,我该如何测试呢? 我正在使用.NET 4.5.1和Prism 6
public class Bootstrapper : UnityBootstrapper
{
protected override DependencyObject CreateShell()
{
return Container.Resolve<MainWindow>();
}
protected override void InitializeShell()
{
base.InitializeShell();
Application.Current.MainWindow = (Window)Shell;
Application.Current.MainWindow.Show();
}
protected override void ConfigureModuleCatalog()
{
ModuleCatalog moduleCatalog = (ModuleCatalog)ModuleCatalog;
moduleCatalog.AddModule(typeof(MainShellModule));
}
}
是的,我会稍微修改你的Bootstrapper来帮助测试:
public class Bootstrapper : UnityBootstrapper
{
protected override DependencyObject CreateShell()
{
return Container.Resolve<MainWindow>();
}
protected override void InitializeShell()
{
base.InitializeShell();
Window app_window = Shell as Window;
if((app_window != null) && (Application.Current != null))
{
Application.Current.MainWindow = app_window;
Application.Current.MainWindow.Show();
}
}
protected override void ConfigureModuleCatalog()
{
ModuleCatalog moduleCatalog = (ModuleCatalog)ModuleCatalog;
moduleCatalog.AddModule(typeof(MainShellModule));
}
}
然后你可以让你的单元测试看起来像这样:
[TestFixture, RequiresSTA]
public class BootstrapperTest
{
// Declare private variables here
Bootstrapper b;
/// <summary>
/// This gets called once at the start of the 'TestFixture' attributed
/// class. You can create objects needed for the test here
/// </summary>
[TestFixtureSetUp]
public void FixtureSetup()
{
b = new Bootstrapper();
b.Run();
}
/// <summary>
/// Assert container is created
/// </summary>
[Test]
public void ShellInitialization()
{
Assert.That(b.Container, Is.Not.Null);
}
/// <summary>
/// Assert module catalog created types
/// </summary>
[Test]
public void ShellModuleCatalog()
{
IModuleCatalog mod = ServiceLocator.Current.TryResolve<IModuleCatalog>();
Assert.That(mod, Is.Not.Null);
// Check that all of your modules have been created (based on mod.Modules)
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.