Visual Studio のデータ ドリブン テストの使用に問題があります。これを最も単純な例に分解しようとしました。Visual Studio 2012 を使用しています。新しい単体テスト プロジェクトを作成します。システムデータを参照しています。
私のコードは次のようになります。
namespace UnitTestProject1
{
[TestClass]
public class UnitTest1
{
[DeploymentItem(@"OrderService.csv")]
[DataSource("Microsoft.VisualStudio.TestTools.DataSource.CSV", "OrderService.csv", "OrderService#csv", DataAccessMethod.Sequential)]
[TestMethod]
public void TestMethod1()
{
try
{
Debug.WriteLine(TestContext.DataRow["ID"]);
}
catch (Exception ex)
{
Assert.Fail();
}
}
public TestContext TestContext { get; set; }
}
}
Build Options を 'Content' と 'Copy Always' に設定した非常に小さな csv ファイルがあります。ソリューションにファイルを追加し、.testsettings
展開を有効に設定し、csv ファイルを追加しました。
|DataDirectory|
を使用して、または使用せずに、フルパスを指定して/指定せずにこれを試しました(Environment.CurrentDirectoryで取得したのと同じパス)。念のため、「../」と「../../」のバリエーションを試しました。現在、csv はプロジェクトのルート レベルにあり、.cs テスト コード ファイルと同じです。
xml と csv のバリエーションを試しました。
TestContext は null ではありませんが、DataRow は常に null です。
いろいろいじっても、これが機能しませんでした。何が間違っているのかわかりません。
mstest は、csv ファイルの検索に失敗したかどうか、または DataRow のデータの取り込みに失敗した原因として考えられる特定のエラーを教えてくれるログをどこかに作成しますか?
次のcsvファイルを試しました:
ID
1
2
3
4
と
ID、なんでも
1,0
2,1
3,2
4,3
これまでのところ、サイコロはありません。
ReSharper を使用していますが、何らかの方法で干渉している可能性はありますか?
更新しまし た。現在、ほとんどが機能しています。XML は使用できますが、CSV を使用すると、ID という名前の列が「ID」として返されます。
理由がわからない。もちろん、実際のファイルを確認しましたが、変な文字はありません。
同様の問題を抱えている人のために、より詳細なデバッグ情報を取得できるように、Just My Code をオフにし、Net Framework ソース ステップなどを有効にしました。これにより、ReSharper が問題を引き起こしていると判断できました。resharper を無効にして、属性を次のように変更しました。
[DeploymentItem("UnitTestProject1\\OrderService.csv")]
[DataSource("Microsoft.VisualStudio.TestTools.DataSource.CSV", "|DataDirectory|\\bin\\Debug\\OrderService.csv", "OrderService#csv", DataAccessMethod.Sequential)]
そして、それは機能しました(注記を除く)。私はまだ自分のパスに「bin\debug」があるのではないかと疑っていますが、DataRow が null ではなくなったことに満足しています。ありがとう!
何か案は?