繁体   English   中英

我应该对我的引导程序进行单元测试,如果是这样的话?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM