現在、私は適切な単体テストを学んでいます。今はXMLファイルから適切なオブジェクトにデータをマッピングするクラスの単体テストを作成しようとしています。もちろん、クラスのすべての機能は、対応するXMLファイルの存在に依存しています。 XMLファイルはクラスのコンストラクタにロードされます。特定のファイルが必要なクラスを単体テストする方法
私はNUnitでC#を使用しています。テストでのファイルの存在をチェックすること行くための適切な方法であるので、これらの試験上の任意の提案はあまり歓迎されている場合
[Test]
public void ShouldAllowInstanceToBeCreatedWhenXMLFileIsPresent()
{
if (File.Exists(SettingsReader.XML_SETTINGS_PATH))
{
SettingsReader settingsReader = new SettingsReader();
Assert.AreNotEqual(null, settingsReader);
}
}
[Test]
[ExpectedException("Telekanzlei.Clientmanager.XMLDataLayer.XMLFileNotFoundException")]
public void ShouldThrowExceptionWhenXMLFileIsNotPresent()
{
if (!File.Exists(SettingsReader.XML_SETTINGS_PATH))
{
SettingsReader settingsReader = new SettingsReader();
}
else
throw new XMLFileNotFoundException();
}
私はよく分からない。これまでのところ私は2つのテストを持っています。しかし、私の質問は、次のテストを進める方法です。 XMLファイルが存在しない場合は、明らかにすべての次のテストが失敗します。
私はXMLファイルが存在していると仮定していますが、失敗したテストはそれがそうでないことを念頭に置いていますか?それは私にとって正しいとは思わないでしょう。
このような問題を処理する一般的なパターンはありますか?任意のヘルプ
編集用
Thxを:実際にどのようなSettingsReader、あなたに伝えるために役立っている可能性があります。ファイルが実際に存在した場合、それが失敗していたとして...、
EDIT2を第二のテストを書き直しそうです。これまでのところ、それは次のようになります。
public class SettingsReader
{
public static readonly string XML_SETTINGS_PATH = "C:\\Telekanzlei\\Clientmanager_2.0\\Settings.xml";
public XElement RootXElement { get; private set; }
public SettingsReader()
{
if (!File.Exists(XML_SETTINGS_PATH))
throw new XMLFileNotFoundException();
using (var fs = File.OpenRead(XML_SETTINGS_PATH))
{
RootXElement = XElement.Load(fs);
}
}
}
私はわからないんだけど、私は、StreamReaderをここに行く方法ではないでしょうと思い、それでしょうか?
設定リーダーは依存性注入を使用するように設計されていますか? DIとモックの良いケースのように聞こえる。 –
MSTestには[DeploymentItem]があります。たぶんNUnitにそんなことがありますか? –