Does Nunit TestCase attribute with Result property

2019-07-13 03:03发布

So, I wrote next "test" test :-) for Nunit 2.6 (use 2.6.0.12035 ver.)

    [TestCase(1, 2, Result = 3)]
    [TestCase(3, 4, Result = 7)]
    [TestCase(5, 6, Result = 11)]
    public int Add_Test(int a, int b)
    {
        return a - b;
    }

Next, I run it with Resharper 6.1.37.86. Resharper shows that all three test are passed. Than I try to run test with nunit GUI - nunit.exe. Tests fall with strange error message: "Method has non-void return value". In fact all tests should fail with unexpected value of result. Does this feature work incorrect or I do smth. wrong? By the way, next I try do without set Result property and it works perfect with both runners:

    [TestCase(1, 2, 3)]
    [TestCase(3, 4, 7)]
    [TestCase(5, 6, 11)]
    public void Add_Test1(int a, int b, int result)
    {
        Assert.AreEqual(result, a - b);
    }

1条回答
爱情/是我丢掉的垃圾
2楼-- · 2019-07-13 04:02

I get the same problem with NUnit 2.6.0.12035, whether I use NUnit.exe or NUnit-console.exe.

Your example works fine using NUnit.exe 2.5.10. (My guess is that Resharper is using NUnit 2.5.10 and so the test passes.)

I reported the issue to the NUnit discussion group.

Edit: My test assembly was referencing the 2.5.10 version of NUnit.framework.dll. If I switch to use the 2.6.0.12035 version, the test works as expected with both NUnit.exe and NUnit-console.exe. I'll bet your issue is the same.

Edit 2: It has been submitted as a bug and fixed in the next release. The test runners in 2.6 will no longer cause an error if your unit test library links to an older version of Nunit.framework.dll.

查看更多
登录 后发表回答