我写了一堆使用TestCaseAttribute的单元测试。当我使用ReSharper单元测试运行器时,这些测试在我的本地机器上运行良好。不幸的是,当我使用NUnit VS Adapter 2.0.0.0通过Visual Studio运行测试时,我得到以下输出:
------ Run test started ------
NUnit VS Adapter 2.0.0.0 executing tests is started
Loading tests from D:\Projects\Ever\WebApp\Ever.UnitTests\bin\Debug\Ever.UnitTests.dll
Exception System.Reflection.AmbiguousMatchException,
Exception thrown executing tests in
D:\Projects\Ever\WebApp\Ever.UnitTests\bin\Debug\Ever.UnitTests.dll
NUnit VS Adapter 2.0.0.0 executing tests is finished
========== Run test finished: 0 run (0:00:00.8290488) ==========
我们使用Visual Studio Online托管构建服务器进行构建,依赖于测试适配器来运行我们的NUnit单元测试。这意味着我需要找到一种方法来使这个工作与属性(更喜欢)或我必须解决这个限制。
答案 0 :(得分:2)
在进一步调试和测试后,我得出结论,TestCaseAttribute不是问题的原因。我正在回答我自己的问题,而不是删除 1 ,以防其他人陷入与我相同的陷阱。
TestCaseAttribute正常工作,您可以通过以下测试看到。这些测试通过VS测试适配器和ReSharper测试运行器完美运行。
[TestFixture]
public class SimpleReproAttempt
{
[Test]
[TestCase(true, false)]
[TestCase(false, true)]
public void DoesNotReproduceIssue(bool a, bool b)
{
Assert.IsTrue(a || b);
}
[Test]
[TestCase("", false, true)]
[TestCase(null, true, false)]
public void DoesNotReproduceIssue(string a, bool b, bool c)
{
Assert.IsTrue(b || c);
Assert.IsNullOrEmpty(a);
}
}
这个问题似乎只出现在an overloaded method with at least one of the overloads using async/await的测试中。
1:根据此信息修改我的问题会将其转换为chameleon question,并且不鼓励chameleon via self answer,因此我也驳回了该选项。