【发布时间】:2009-09-05 02:52:19
【问题描述】:
我正在使用 NUnit 和 TestDriven.NET 插件编写单元测试。我想为这样的测试方法提供参数:
[TestFixture]
public class MyTests
{
[Test]
public void TestLogin(string userName, string password)
{
// ...
}
...
}
如您所见,这些参数是私有数据,因此我不想对它们进行硬编码或将它们放入文件中。其实我不想在任何地方写它们,我想在每次运行测试时得到提示。
当我尝试运行此测试时,我在输出窗口中收到以下消息:
TestCase 'MyProject.MyTests.TestLogin' 未执行:未提供参数
所以我的问题是,我如何提供这些参数?我希望 TestDriven.NET 会显示一个提示,以便我可以输入值,但它没有...
对不起,如果我的问题看起来很愚蠢,答案可能很简单,但我在 Google 上找不到任何有用的东西......
编辑:我刚刚找到了一种方法,但这是一个肮脏的把戏......
[Test, TestCaseSource("PromptCredentials")]
public void TestLogin(string userName, string password)
{
// ...
}
static object[] PromptCredentials
{
get
{
string userName = Interaction.InputBox("Enter user name", "Test parameters", "", -1, -1);
string password = Interaction.InputBox("Enter password", "Test parameters", "", -1, -1);
return new object[]
{
new object[] { userName, password }
};
}
}
我仍然对更好的解决方案感兴趣...
【问题讨论】:
-
我认为如果您这样做,您将无法在 CI(持续迭代)环境中自动运行测试。
-
你说得对。不过,这是一个小型社区项目,因此 CI 并不是真正的问题,至少目前是这样。
标签: parameters nunit testing testdriven.net