テスト用にMsTestsとData Drivenの手法を使用します。 (Excelはテスト用のデータストレージです)代わりにMstest名データ駆動型のデータ行を使用する
テスト結果はテストデータに関する情報を提供しません。 例:
結果は次のようになります。 testname(データ行5)。それは私には明らかではありません。
出力テスト結果をカスタマイズするにはどうすればよいですか?例えば テスト名(テストデータ(名前単語、番号、又は行))
テスト用にMsTestsとData Drivenの手法を使用します。 (Excelはテスト用のデータストレージです)代わりにMstest名データ駆動型のデータ行を使用する
テスト結果はテストデータに関する情報を提供しません。 例:
結果は次のようになります。 testname(データ行5)。それは私には明らかではありません。
出力テスト結果をカスタマイズするにはどうすればよいですか?例えば テスト名(テストデータ(名前単語、番号、又は行))
Iは一解決策が見つかりました:私は1000行とMyData.xlsxファイルが
を。単純ロジック: "A"列= 1、 "B"列= A * 2 + 2。
行5,6,7および11,12,13は、失敗した結果を作るために0になります。
私のテストのソースコード:
public TestContext TestContext { get; set; }
[TestMethod]
[DataSource("System.Data.Odbc", "Dsn=Excel Files;dbq=|DataDirectory|\\TestData\\MyData.xlsx;", "TestDataSheet$", DataAccessMethod.Sequential)]
public void ExcelDataSource1000Items()
{
var errorMessage = "Passed";
int valueA = Convert.ToInt32(TestContext.DataRow["valueA"]);
int valueB = Convert.ToInt32(TestContext.DataRow["valueB"]);
try
{
Assert.AreEqual(valueA * 2 + 2, valueB);
}
catch (Exception exception)
{
errorMessage = exception.Message;
}
TestContext.WriteLine(string.Format("valueA: {0}, valueB: {1}, AssertResult: {2}", valueA, valueB, errorMessage));
}
パラメータを持つ(* .trxファイルを生成する)MSTESTコマンドラインから実行テスト後:我々はテストと* .trxファイルを生成/ TESTCONTAINER、/ testsettings、/ resultsfile結果。
そして、我々はこの* .trxファイルを開いた場合、我々はTextMessagesを見ることができます:
<Results>
<UnitTestResult executionId="cfc325a7-647f-4ef3-bb08-777f7bb3ca37" testId="1dbff80d-1f74-5ea7-35fa-f2ecd1f9b9e4" testName="ExcelDataSource1000Items" computerName="AMDX6" duration="00:00:00.5764248" startTime="2012-09-06T03:21:45.2070571+04:00" endTime="2012-09-06T03:21:46.1251096+04:00" testType="13cdc9d9-ddb5-4fa4-a97d-d965ccfc6d4b" outcome="Passed" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" relativeResultsDirectory="cfc325a7-647f-4ef3-bb08-777f7bb3ca37" resultType="DataDrivenTest">
<Output>
<TextMessages>
<Message>valueA: 1, valueB: 4, AssertResult: Passed</Message>
<Message>valueA: 2, valueB: 6, AssertResult: Passed</Message>
<Message>valueA: 3, valueB: 8, AssertResult: Passed</Message>
<Message>valueA: 4, valueB: 0, AssertResult: Assert.AreEqual failed. Expected:<10>. Actual:<0>. </Message>
<Message>valueA: 5, valueB: 0, AssertResult: Assert.AreEqual failed. Expected:<12>. Actual:<0>. </Message>
<Message>valueA: 6, valueB: 0, AssertResult: Assert.AreEqual failed. Expected:<14>. Actual:<0>. </Message>
<Message>valueA: 7, valueB: 16, AssertResult: Passed</Message>
<Message>valueA: 8, valueB: 18, AssertResult: Passed</Message>
<Message>valueA: 9, valueB: 20, AssertResult: Passed</Message>
<Message>valueA: 10, valueB: 0, AssertResult: Assert.AreEqual failed. Expected:<22>. Actual:<0>. </Message>
<Message>valueA: 11, valueB: 0, AssertResult: Assert.AreEqual failed. Expected:<24>. Actual:<0>. </Message>
<Message>valueA: 12, valueB: 0, AssertResult: Assert.AreEqual failed. Expected:<26>. Actual:<0>. </Message>
<Message>valueA: 13, valueB: 28, AssertResult: Passed</Message>
<Message>valueA: 14, valueB: 30, AssertResult: Passed</Message>
<Message>valueA: 15, valueB: 32, AssertResult: Passed</Message>
<Message>valueA: 16, valueB: 34, AssertResult: Passed</Message>
<Message>valueA: 17, valueB: 36, AssertResult: Passed</Message>
<Message>valueA: 18, valueB: 38, AssertResult: Passed</Message>
<Message>valueA: 19, valueB: 40, AssertResult: Passed</Message>
<Message>valueA: 20, valueB: 42, AssertResult: Passed</Message>
これらTextMessagesは、テストレポートを生成するために解析することができます。 (例えば)
P.申し訳ありませんが、私は10以上の評判を持っていないので、スクリーンショットを追加できません。\
はい、私は同意します。しかし、最初のテストデータの場合、TestContext.CurrentTestOutcomeプロパティは "In Progress"を返します。テストメソッドでTestContext.CurrentTestOutcomeプロパティを使用するのは正しいです。もし私が "TestContext.WriteLine(TestContext.CurrentTestOutcome.ToString());" TestCleanupメソッドでは、私は何も取得しません。 –