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 не поддерживает параметризованные тесты 1, 2?

ответ

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 question и chameleon via self answer не рекомендуется, так что я отклонил этот вариант, как хорошо.

Смежные вопросы