7

テストには MsTests とデータ ドリブン アプローチを使用します。(Excelはテスト用のデータストレージです)

テスト結果は、テスト データに関する情報を提供しません。例えば:

結果は次のように表示されます: testname (データ行 5)。そして、それは私には明らかではありません。

出力テスト結果をカスタマイズするにはどうすればよいですか? たとえば、testname (テスト データ (単語、数値、または行の名前))

4

1 に答える 1

5

私は1つの解決策しか見つけませんでした:

1000 行の MyData.xlsx ファイルがあります。単純なロジック: "A" 列 = 1、"B" 列 = A*2+2。

行 5、6、7 および 11、12、13 には、失敗した結果を作成するためのゼロが含まれています。

私のテストのソースコード:

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));
    }

/testcontainer、/testsettings、/resultsfile のパラメーターを使用して MsTest コマンド ライン (*.trx ファイルを生成するため) からテストを実行した後、テスト結果を含む *.trx ファイルを生成します。

この *.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:&lt;10&gt;. Actual:&lt;0&gt;. </Message>
      <Message>valueA: 5, valueB: 0, AssertResult: Assert.AreEqual failed. Expected:&lt;12&gt;. Actual:&lt;0&gt;. </Message>
      <Message>valueA: 6, valueB: 0, AssertResult: Assert.AreEqual failed. Expected:&lt;14&gt;. Actual:&lt;0&gt;. </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:&lt;22&gt;. Actual:&lt;0&gt;. </Message>
      <Message>valueA: 11, valueB: 0, AssertResult: Assert.AreEqual failed. Expected:&lt;24&gt;. Actual:&lt;0&gt;. </Message>
      <Message>valueA: 12, valueB: 0, AssertResult: Assert.AreEqual failed. Expected:&lt;26&gt;. Actual:&lt;0&gt;. </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 を解析して、テスト レポートを生成できます。(例えば)

PS 申し訳ありませんが、スクリーンショットを追加できません。評判が 10 以上ないためです =\

于 2012-09-05T23:39:32.633 に答える