ユニットテストをどのような依存関係からも分離する必要があることは分かっています。私はTypemockを使ってアプリケーションの単体テストを書こうとしています。問題は、クラス内のメソッドの1つで、いくつかのXMLファイルパスパラメータを受け入れ、そのメソッドのどこかで使用されるメソッド内にXMLDocumentオブジェクトを作成することです。xmlファイルパスをパラメータとして受け入れるメソッドのユニットテストの書き方
public bool ValidateXml(String aFilePath, String ruleXmlPath)
{
XmlDocument myValidatedXml = new XmlDocument();
try
{
myValidatedXml.Load(aFilePath);
}
catch
{
return false;
}
XmlDocument myRuleXml = new XmlDocument();
try
{
myRuleXml.Load(ruleXmlPath);
}
catch
{
return false;
}
MyClass myObject = new MyClass(myValidatedXml);
//Do something more with myObject.
XmlNodeList rules = myRuleXml.SelectNodes("//rule");
//Do something more with rules object.
return true;
}
物理的な場所を指定することなくユニットテストを作成するにはどうすればよいですか? 注:残念ながらコードを変更することはできません。
コードを変更できない場合、単体テストがバグを公開した場合はどうなりますか?真剣に - XmlDocumentまたはストリームのいずれかを受け入れ、それをテストするオーバーロードを追加します。次に、新しいメソッドに委譲するだけで、現在の実装を書き直します。 – rjnilsson
@Cwan true、変更が許可されていないコードのテストは、奇妙なものです –
これも私が悩まされているのですが、私は上司ではありません。しかし、彼らは彼らのレガシーアプリの単体テストを書くことに非常に熱心なので、彼らと一緒に試してみることにします。 –