単体テストしたいデータ変換関数があります。約 50 の出力につながる可能性のある可能な入力 (約 1000) の有限ではあるがかなり長いリストを特定しました。VS単体テストで、入力のリストと予想される出力のリスト(2列のExcelチャートのように)を設定し、それを単体テストにフィードする方法はありますか?
方法があるとすれば、どのように?ありがとう。
単体テストしたいデータ変換関数があります。約 50 の出力につながる可能性のある可能な入力 (約 1000) の有限ではあるがかなり長いリストを特定しました。VS単体テストで、入力のリストと予想される出力のリスト(2列のExcelチャートのように)を設定し、それを単体テストにフィードする方法はありますか?
方法があるとすれば、どのように?ありがとう。
MSTest にはDataSourceAttribute
. 単体テスト メソッドをマークすることで、データ ソースへのテスト アクセスを許可します。データベースから CSV や Excel ファイルまで、さまざまな形式をサポートしています。
このブログ投稿の例:
[TestMethod]
[DataSource("Microsoft.VisualStudio.TestTools.DataSource.CSV",
"MyWidgetTests.csv", "MyWidgetTests#csv", DataAccessMethod.Sequential)]
public void TestMyBusinessLogicWithCsv()
{
int valueA = Convert.ToInt32(TestContext.DataRow["valueA"]);
int valueB = Convert.ToInt32(TestContext.DataRow["valueB"]);
int expectedResult = Convert.ToInt32(TestContext.DataRow["expectedResult"]);
int actualResult = MyWidget.MyBusinessLogic(valueA, valueB);
Assert.AreEqual(expectedResult, actualResult,
"The result returned from the widget was not as expected.");
}
それだけ多くの入力がある場合は、これを自動化された統合テストとして記述できます。具体的には、あるファイルにすべての入力/出力をリストし、テストでそのファイルを読み取り、この方法でテストを実行します。
これにより、テストがシンプルで読みやすくなり、すべてのデータが外部にあるため、実際のテストのロジックを混乱させることなく簡単に変更できます。