我正在玩NUnit 2.6.3,我做了这个测试:
using NUnit.Framework;
using System;
namespace NUnit26Tests
{
[TestFixture]
public class RandomTests
{
[Test]
public void RandomTest([Random(1, 100, 5)] int value)
{
Assert.IsTrue(true);
}
[Test]
public void SuccessTests()
{
Assert.That(true, Is.True);
}
}
}
但大多数执行时间(99%)RandomTest 不在Test Runner上执行。
这是输出消息窗口:
------ Discover test started ------ NUnit 1.0.0.0 discovering tests is started NUnit 1.0.0.0 discovering test is finished ========== Discover test finished: 6 found (0:00:00,9970583) ========== ------ Run test started ------ NUnit 1.0.0.0 executing tests is started Run started: C:\TestProjects\NUnit26Tests\NUnit26Tests\bin\Debug\NUnit26Tests.dll NUnit 1.0.0.0 executing tests is finished Test adapter sent back a result for an unknown test case. Ignoring result for 'RandomTest(92)'. Test adapter sent back a result for an unknown test case. Ignoring result for 'RandomTest(38)'. Test adapter sent back a result for an unknown test case. Ignoring result for 'RandomTest(69)'. Test adapter sent back a result for an unknown test case. Ignoring result for 'RandomTest(96)'. ========== Run test finished: 2 run (0:00:09,271531) ==========
在这种情况下,只执行了五个RandomTest中的一个。
我已经使用跑步者Nuget Package测试并安装了NUnit Runner扩展,结果相同。
知道这是什么问题吗?
答案 0 :(得分:4)
我能够重现这种行为。这似乎是NUnit框架和/或测试适配器中的一个错误。
我的猜测是,在运行测试之前(显示它们)和运行一次之后绘制一次随机值。绘制的随机值可能不匹配,因此可能无法分配测试结果,从而导致提到的错误消息。
您可以在项目的开发站点(https://launchpad.net/nunitv2)打开此问题的错误,但他们正忙于即将发布的v3版本。
作为您的问题的解决方法,我建议您使用静态(随机)值(不使用RandomAttribute
)或在测试中绘制随机值(不作为参数):
[Test]
[TestCase(15)]
[TestCase(38)]
[TestCase(2)]
[TestCase(72)]
[TestCase(69)]
public void RandomTest(int value)
{
Assert.IsTrue(true);
}
在github上有一个known issue。