18

基本的に次のようなテストクラスがあります。

[TestClass]
public class MyTest
{
    private MyClass o1;
    private MyClass o2;

    [TestInitialize]
    private void PrepareObjects()
    {
        o1 = new MyClass();
        o2 = new MyClass();
    }

    [TestMethod]
    public void TestEquality()
    {
        Assert.IsTrue(o1.Equals(o2));
    }        
}

しかし、テストを実行すると、が表示されNullReferenceExceptionます。内部にブレークポイントを配置するPrepareObjectsと、その時点で呼び出されていないTestEqualityことがわかります。TestInitializeTestEquality

PrepareObjectsプライベートからパブリックに変更すると、これが修正されます。なんで?

4

1 に答える 1

31

テストフレームワークは、パブリックメソッドのみを探しています。同様に、TestEqualityプライベートにすると実行されません。MyTest内部にすると、表示されているものは何も実行されません。

于 2012-11-01T13:13:16.607 に答える