【发布时间】:2014-04-10 21:59:59
【问题描述】:
我从工具 | 添加扩展和更新:NUnit 测试适配器、NUnit 测试生成器、用于 Visual Studio 2012 和 2013 的 xUnit.net 运行器、单元测试生成器。
似乎只有单元测试生成器给了我一个上下文菜单项,允许我右键单击表单的类构造函数和“生成单元测试”。但是,当我右键单击同一项目中普通旧类的方法时,不会出现该上下文菜单项。如果我尝试为按钮单击或文本框选择生成单元测试,也不会出现该上下文方法,包括如果我从表单设计器代码(例如this.button1.Click += new System.EventHandler(this.button1_Click);)内的任何地方尝试它。这是为什么呢?
此外,虽然“生成单元测试”让我可以选择 MSTest、NUnit 和 XUnit,但只有 MSTest 有效。其他两个选项会创建新的测试项目而不是测试类,并生成一个长错误消息框:
未找到与约束匹配的导出:
合同名称
NuGet.VisualStudio.IVsPackageInstallerServices
RequiredTypeIdentity
NuGet.VisualStudio.IVsPackageInstallerServices
最后,生成的骨架 MSTest 方法没有显示访问表单及其控件的明显方法。这篇文章http://www.steveandrews.me/blog/2008/02/05/testing-the-winforms-ui 的作者显然在 2008 年使用了不同的 Visual Studio,他写道,生成的方法包含有助于访问表单的代码:
`[TestMethod()]
[DeploymentItem("WindowsFormsApplication1.exe")]
public void InitializeComponentTest()
{
Form1_Accessor target = new Form1_Accessor(); // TODO: Initialize to an appropriate value
target.InitializeComponent();
Assert.Inconclusive("A method that does not return a value cannot be verified.");
}`
现在,有了 Visual Studio 2013 Ultimate 和 MSTest,我得到的只是:
[TestMethod()]
public void Form1Test()
{
throw new NotImplementedException();
}
我在其他地方读到,如果想测试文本框选择和按钮单击等内容,则应该使用 MVVM 模式,但我想知道是否有一种“正确”的方法可以从 Visual Studio 内部对经典 WinForms 进行单元测试. (我显然对这一切都不熟悉!)
谢谢
【问题讨论】:
-
很遗憾,我别无选择。但是,我确实回答了我自己的一个问题。我注意到我的普通旧类没有被宣布为公开,所以我这样做了,现在出现了“生成单元测试”右键菜单项。这也是事件处理程序等的问题。他们是私人的。
标签: c# winforms unit-testing visual-studio-2013