統合テストに関して、次の問題に遭遇しました。
コード (他の関数を使用した単純なもの)。AddItem
関数にブレークポイントを設定しました。
[TestInitialize]
public void MyTestInitialize() {
Assert.IsTrue( AddItem() );
}
[TestCleanup]
public void MyTestCleanup() {
Assert.IsTrue( RemoveItem() );
}
[TestMethod]
public void ListTest(){
AClass test = new AClass();
Assert.IsTrue(test.List().Count > 0);
}
private bool AddItem() {
AClass obj = new AClass();
Assert.IsTrue(obj.Add("test", "123")); //no duplicate will be allowed ! (return false if duplicate found)
obj.Files = ConstructFiles();
...
...
}
private string[] ConstructFiles(){
return Directory.GetFiles(@"/folder/files", "*.doc");
//when execute the above code then the breakpoint from `AddItem` is reached !!!
}
テストListTest
が自動的に呼び出される場合AddItem
(TestInitialize
属性のため)。
最初の呼び出しは問題ありませんが、この function( AddItem
) が別の関数ConstructFiles
を呼び出すと、ブレークポイントにAddItem
到達し、関数が再度実行されます。
なんで ?
もちろん、私はTestMethod
属性を使用して別のテストを行っていますが、最初に呼び出すときに不明なAddItem
点があり、それがConstructFiles
.