我一直在忙着NUnitForms
而且我的简单测试遇到了麻烦。我将在下面提供更多信息,但简要总结一下这个问题,我处于一种状态,我需要从NUnitFormTest
类继承以使用ExpectModal
功能,但这会导致测试未找到(使用NUnit 3.6.1)。如果我降级到NUnit
版本2.x,则会发现测试但我在TearDown函数上出错。我在这里找不到什么东西?
现在有关详细信息,请参阅下文......
我的测试最初是引用NUnit 3.6.1
,如下所示:
using EnterpriseManager;
using NUnit.Extensions.Forms;
using NUnit.Framework;
namespace ManagerTests
{
[TestFixture]
public class ManagerTests
{
[Test]
public void ConnectTest()
{
ConnectForm form = new ConnectForm();
form.Show();
ButtonTester testButton = new ButtonTester("TestConnectionButton", "ConnectForm");
testButton.Click();
LabelTester testLabel = new LabelTester("StatusLabel", "ConnectForm");
Assert.AreEqual("Connection successful", testLabel.Text);
}
}
}
在我上面的初始测试中,我没有继承NUnitFormTest
类(当时没有意识到它),但即使缺少它,我的测试也会被Visual Studio找到测试资源管理器和我可以通过nunit3-console
应用程序(已通过)运行我的测试。
最终我扩展了我的测试以调用一个模式对话框,这对我造成了问题,尽管最后我读到了导致我添加ExpectModal
继承的NUnitFormTest
功能。测试结果如下:
using EnterpriseManager;
using NUnit.Extensions.Forms;
using NUnit.Framework;
namespace ManagerTests
{
[TestFixture]
public class ManagerTests : NUnitFormTest
{
[Test]
public void ConnectTest()
{
ConnectForm form = new ConnectForm();
form.Show();
ButtonTester testButton = new ButtonTester("TestConnectionButton", "ConnectForm");
testButton.Click();
LabelTester testLabel = new LabelTester("StatusLabel", "ConnectForm");
Assert.AreEqual("Connection successful", testLabel.Text);
ExpectModal("ConnectToServer", delegate {
LabelTester label = new LabelTester("ConnectStatusLabel", "ConnectToServer");
Assert.AreEqual("Connected", label.Text);
});
// Launch the modal dialog
ButtonTester connectButton = new ButtonTester("ConnectToServerButton", "ConnectForm");
connectButton.Click();
}
}
}
这就是问题的开始。添加NUnitFormTest
类的继承后,Visual Studio和nunit3-console.exe
都没有检测到任何测试。我认为这可能与引用的NUnit
的版本有关,因此我降级为各种2.x版本。这允许Visual Studio检测测试(虽然nunit3-console.exe
保持报告" Inconclusive"结果)但所有测试都会因错误而失败:
Result StackTrace:
--TearDown
at NUnit.Extensions.Forms.Desktop.Destroy()
at NUnit.Extensions.Forms.NUnitFormTest.Verify()
Result Message: TearDown : System.ComponentModel.Win32Exception : The requested resource is in use
我已经找到了一些关于这个问题的搜索,但是我发现的所有内容似乎都表明这是NUnit
之前遇到的一些问题,这个问题在某些时候得到了解决(不要引用我的话)。所以现在我处于一种状态,我需要从NUnitFormTest
类继承以使用ExpectModal
功能,但这会导致无法找到测试。然而,如果我向下移动到NUnit
版本2.x,我会在TearDown
函数上遇到问题。我有什么东西在这里失踪吗?
答案 0 :(得分:1)
NUnitForms多年没有更新,所以它仍然依赖于NUnit V2。当您从NUnitFormTest派生时,无论您认为自己安装了什么,都使用NUnit 2.6.2,因为代码与NUnit的版本紧密耦合。
NUnitForms可以很容易地更新到NUNit 2.6.4,但除此之外,它还有一个更大的变化,甚至可能需要重写。
顺便说一句,卢克很久以前就把我加入了这个项目,但我还没有活跃过。我曾经希望将它的版本与NUnit 3一起使用,但我怀疑对Windows Forms的测试需求还有很多。您应该从解决方案中删除NUnit框架的所有包,并引用随NUnitForms一起安装的版本。如果你想试验不同的版本,它们应该是NUnitForms的版本,这样你的测试和NUnitForms都引用了NUnit的同一副本。