NUnit 2.6.3-测试未执行,消息Test adapter为未知测试用例发回了一个结果



我在玩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是而不是在测试运行器上执行。

这是输出消息窗口:

------发现测试已启动------NUnit 1.0.0.0发现测试已启动NUnit 1.0.0.0发现测试完成======发现测试已完成:发现6个(0:00:009970583)==========------运行测试已启动------NUnit 1.0.0.0执行测试启动运行已启动:C:\TestProjects\NUnit26Tests\NUnit26 Tests\bin\Debug\NUnit26Tests.dllNUnit 1.0.0.0执行测试完成测试适配器发回了未知测试用例的结果。正在忽略"RandomTest(92)"的结果。测试适配器发回了未知测试用例的结果。正在忽略"RandomTest(38)"的结果。测试适配器发回了未知测试用例的结果。正在忽略"RandomTest(69)"的结果。测试适配器发回了未知测试用例的结果。正在忽略"RandomTest(96)"的结果。======运行测试完成:2次运行(0:00:09271531)======

在这种情况下,只执行了五次RandomTest中的一次。

我已经用runner Nuget包进行了测试,并安装了NUnit runner扩展,结果相同。

知道问题出在哪里吗?

我能够重现这种行为。这似乎是NUnit框架和/或测试适配器中的一个错误。

我的猜测是,随机值在测试运行之前绘制一次(以显示它们),在运行时绘制一次。所绘制的随机值可能不匹配,因此可能不会分配测试结果,从而导致上述错误消息。

你可以在项目的开发网站上打开这个问题的bug(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上有一个已知的问题。

相关内容

最新更新