データ ソースに CSV ファイルを使用するデータ ドリブンの単体テストがあります。私のファイルの列の 1 つは、文字列として扱われることを意図しています。その列の値を日付として解釈できる行を追加するまで、問題なく動作します。これを行うと、前の行のテストが失敗し始めます。列に「日付」があると、列のすべての値が日付として扱われるようです。日付として解析できない値には、DBNull 値が与えられます。これを防ぐ方法はありますか?おそらく、データ ソースの各列をどの型として扱うべきかを指定することでしょうか?
1190 次
1 に答える
3
あなたが提供した情報に基づいて、値を二重引用符 (") で囲むことをお勧めします。次に、常にすべてのフィールドを文字列として扱い、コードで適切な解析メソッドを呼び出します。
CSV ファイルで次のことを行います。
input,expected
"1600,1","1600,1"
"1600","1600"
簡単なテスト メソッドで両方の値を読み取ります。入力は Double として解析され、予期されるものは String として扱われます。
[DeploymentItem("UnitTest\\TestData.csv"),
DeploymentItem("TestData.csv"), TestMethod(),
DataSource("Microsoft.VisualStudio.TestTools.DataSource.CSV",
"|DataDirectory|\\TestData.csv",
"TestData#csv",
DataAccessMethod.Sequential)
]
public void Test()
{
double input= System.Double.Parse(TestContext.DataRow["input"].ToString());
string expected = TestContext.DataRow["expected"].ToString();
Assert.AreEqual(input, expected);
}
これは非常に基本的な例であり、推奨されていないことを行っている可能性があります。VS2010 での単体テストの経験は限られているため、この回答の改善を提案してください。
この回答は、小数値を読み取るという私の問題に基づいています。これは、現在実装しているフォーマッタをテストするためのものです。
于 2011-11-07T15:45:41.130 に答える