1

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 ユニット テストを実行します。これは、属性を使用してこれを機能させる方法を見つける必要があることを意味します (はるかに望ましい)、またはこの制限を回避する必要があります。

MSTest はパラメーター化されたテスト12をサポートしていないため、TestCaseAttribute の使用を放棄する必要がありますか?

4

1 に答える 1

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);
    }
}

この問題は、 async/await を使用するオーバーロードの少なくとも 1 つを持つオーバーロードされたメソッドを持つテストにのみ存在するようです。


1: この情報に基づいて質問を編集すると、これはカメレオンの質問になり、自己回答によるカメレオンは推奨されないため、そのオプションも却下しました。

于 2015-11-05T18:11:25.060 に答える