gle*_*ron 28 c# nunit unit-testing testcase
这是非常简单但令人烦恼的行为,我遇到了NUnit:
我有一些像这样的测试:
[Test]
[TestCase( 1, 2, "hello" )]
[TestCase( 3, 5, "goodbye" )]
public void MyClass_MyMethod( int a, int b, string c )
{
Assert.IsTrue( a < b );
}
Run Code Online (Sandbox Code Playgroud)
这工作正常,在ReSharper NUnit窗格中,我可以看到每个TestCase在结果中获得自己的响应.
我有第二个看起来像这样的TestCase:
[Test]
[TestCase( 1, 2, new long[] { 100, 200 })]
[TestCase( 5, 3, new long[] { 300, 500 })]
public void MyClass_MyOtherMethod( long a, long b, long[] bunchOfNumbers )
{
Assert.IsTrue( a < b );
}
Run Code Online (Sandbox Code Playgroud)
当我运行它时,我看到了这个:
一个或多个子测试有错误Exception没有堆栈跟踪
public void MyClass_MyOtherMethod(5,3,System.Int64 [])失败
与我的其他测试不同的是,它将每个TestCase抽取为测试列表上的一个单独的复选框,而这一个没有显示,我没有详细信息,直到我在调试器中运行它出现了什么问题以及在哪里.我有点担心这个测试在构建机器上的表现.有谁知道发生了什么,为什么?
gle*_*ron 32
继JetBrains上的这个错误后,看起来这里的解决方案就是TestName在不同情况下使用该属性:
[Test]
[TestCase( 1, 2, new long[] { 100, 200 }, TestName="Test 1" )]
[TestCase( 5, 3, new long[] { 300, 500 }, TestName="Test 2" )]
public void MyClass_MyOtherMethod( long a, long b, long[] bunchOfNumbers )
{
Assert.IsTrue( a < b );
}
Run Code Online (Sandbox Code Playgroud)
如果我的一个测试失败,现在一切都在ReSharper中正确显示.
Ray*_*ega 10
对于包含字符串的object数组,请使用具有以下TestCase属性的数组params:
[Test]
[TestCase(new object[] {"foo", "bar", "baz"})]
[TestCase(new object[] {"300", "500", "700"})]
public void MyClass_SomeOtherMethod(params string[] bunchOfStrings)
{
// assert something...
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
20417 次 |
| 最近记录: |