不同构建的备用启动对象
本文关键字:启动 对象 备用 同构 构建 | 更新日期: 2023-09-27 18:35:09
我有一个标准的WPF应用程序。VS 解决方案有一个主项目和一个单元测试项目(使用标准 VS 单元测试套件)
对于单元测试以外的测试目的(例如,只是交互式地尝试一段新代码),我必须等待整个应用程序启动,然后单击要测试的表单。
我宁愿我能选择一个具有不同入口点的替代版本,它会跳过所有我不需要的东西,并将我放在我想去的地方。除了"调试"和"发布"之外,我还创建了一个额外的构建配置,称为"调试(测试)"。如何设置选择此版本时执行的不同启动对象?
还是有解决此问题的替代方法?为了简化测试和分析,我更喜欢不涉及添加其他项目或 dll 的内容。
一种可能的解决方案是定义一个编译器符号并在我的 app.xaml 中检查它.cs
#if DEBUG_TEST
TestWindow view = new TestWindow();
view.Show();
#else
MainWindow view = new MainWindow();
view.Show();
#endif
有什么不那么笨拙的吗?
我不知道
你为什么认为这种方法"笨拙"。
这似乎是正确的方法。
只需选择配置调试(测试),并将DEBUG_TEST定义添加到项目的属性页。
完成测试后,返回到正常配置。
另一种方法是依赖注入: http://www.martinfowler.com/articles/injection.html
假设您使用此代码:
IMainView view = DIContainer.GetInstance<IMainView>();
view.Show();
在主项目中,将依赖项注入容器配置为使用 MainWindows
DIContainer.SetDefaultInstance<IMainView, MainView>();
并在您的测试项目中
DIContainer.SetDefaultInstance<IMainView, TestView>();
MainView 和 TestView 需要实现
interface IMainView
{
void Show();
}
这个简单的方法可以自己完成(use Activator.CreateInstance<T> in GetInstance
),但有几个框架可以解决这个问题。
哪些 .NET 依赖注入框架值得研究?