1

我寫了一堆利用TestCaseAttribute的單元測試。當我使用ReSharper單元測試運行器時,這些測試在我的本地機器上運行良好。不幸的是,當我運行通過Visual Studio中的NUnit的VS適配器2.0.0.0我得到以下輸出測試:NUnit TestCaseAttribute導致AmbiguousMatchException與NUnit VS適配器

------ 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在線託管構建服務器爲我們的建設,以及依賴測試適配器來運行我們的NUnit單元測試。這意味着我需要找出一種方法來使這個屬性工作(更喜歡)或我必須解決這個限制。

我必須放棄使用TestCaseAttribute因爲MSTest的不支持參數測試12

回答

2

經過進一步調試和測試我已經斷定TestCaseAttribute不是問題的原因。我正在回答自己的問題,而不是刪除以防其他人陷入我所做的同一陷阱。

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 questionchameleon via self answer氣餒,所以我被解僱了該選項也是如此。