[MSTest]テストエクスプローラーでユニットテストが見つからない場合の対処法


MSTestを使ってユニットテストを書いた際にテストエクスプローラーに表示されない問題が多発していましたが、私の場合は以下の方法で見つかるようになりました。

結論

TestClass属性を付けたテストクラスのアクセス修飾子をpublicにしましょう。

[TestClass]
public class SampleTests
{
    [TestMethod]
    public void SampleTest(){
        Assert.IsTrue(true);
    }
}

経緯

C#での開発をしているのですが、テスト用のプロジェクトを追加しています。
テスト対象のクラスが増えるたびにテスト用のプロジェクトにも以下のようにソリューションエクスプローラーから新しいクラスを追加していました。

しかし、この方法でクラスを追加した場合、テンプレートで作成されるクラスはアクセス修飾子がprivateになっています(※実際にはprivatepublicも記述されていないですがそのような場合はprivateとして認識されます)。
privateなクラスはテストエクスプローラーから見えないようなので、このクラスのアクセス修飾子をpublicにする必要があります。

単体テスト用クラスの追加方法

と、ここまで書いて気づいたんですが、単体テスト用クラスの追加メニューありますね。。。

これを使えば初期状態でpublicなクラスが生成されました
めでたしめでたし

その他の対処法たち

テストエクスプローラーからテストが見えない問題はいろいろな原因があるようです。
いくつか見つけたその他の対処法を載せておきます。(その他の症状・対処法をご存知の方は教えてください)