0

NUnitとSeleniumWebDriverを使用してWebテストを作成しています。各テストの最後に、ブラウザのスクリーンショットを取得して画像を保存したいと思います。画像名は名前と同じにしたいのですがTest。しかし、テストメソッド名を取得するのに問題があります。

テスト方法は次のとおりです。

[Test]
public void AbcTest_ShouldPass()
{
    Assert.AreEqual(true, true);
}

これがそれぞれのTearDown後に実行されるものTestです:

[TearDonw]
[MethodImpl(MethoImplOptions.NoInlining)]
public void TestCleanupNunit()
{
    var methodName = new List<string>();
    for (int i = 0; i < 30; i++)
        methodName.Add(i.ToString() + " is " + new StackTrace(i, true).GetFrame(0).GetMethod().Name);

}

しかし、私が見たときmethodName、私は見つけることができませんAbcTest_ShouldPassでした。

0 is TestCleanupNUnit
1 is InvokeMethod
2 is UnsafeInvokeInternal
3 is Invoke
4 is Invoke
5 is InvokeMethod
6 is InvokeMethod
7 is RunTearDown
8 is RunTest
9 is RunTest
10 is RunRepeatedTest
11 is RunTestInContext
12 is Run
13 is RunAllTests
14 is RunSuite
15 is RunSuiteInContext
16 is Run
17 is Run
18 is RunAllTests
19 is RunSuite
20 is RunSuiteInContext
21 is Run
22 is RunAllTests
23 is RunSuite
24 is RunSuiteInContext
25 is Run
26 is RunAllTests
27 is RunSuite
28 is RunSuiteInContext
29 is Run

私はこの投稿を見ましたが、それは私を助けませんでした。

4

4 に答える 4

1

Nunit Framework は、NUnit.Framework.TestContext のメンバーである CurrentContext を提供します。

TestContext.CurrentContext.Test.Name は実行中のテストの名前を返し、TestContext.CurrentContext.Test.FullName は名前空間の名前から始まる完全修飾名を返します。

于 2012-11-05T18:21:12.673 に答える
0

これをテストの分解に含める代わりに、各テストの最後に呼び出すスクリーンショットを保存するプライベート メソッドを使用することができます。次に、期待どおりに、スタック トレースにテスト ケース メソッドが含まれます。

各テストケースに忘れずに追加する必要があるため、このメソッドが完全ではないことに同意しますが、少なくとも汎用的であり、ハードコーディングされた文字列にメソッド名が含まれていません。

于 2012-11-05T17:52:59.410 に答える
0

はい。テストはテスト ティアダウンを呼び出さないためです。テスト ランナーがテスト ケースを呼び出し、次にテストが破棄されます。つまり、テスト ケース メソッドの呼び出しは、ティア ダウンとは異なるスタック トレースのブランチにあります。

テストフィクスチャのどこかにメソッドの名前をキャッシュする必要があります。おそらくプライベートメンバー変数で、各テストケースのメソッドでその変数を設定します。それはあまりエレガントではありませんが、現時点で私が考えることができる唯一の方法です。

于 2012-11-05T17:42:08.760 に答える
0

残念ながら、単体テストの Setup メソッドと Teardown メソッドは、同期コール スタックの一部として実行されず、代わりにテスト エンジンによって処理されます。そのため、Teardown メソッドから観察されるコールスタックには、テストの一部として実行されるメソッドは含まれません。

于 2012-11-05T17:42:26.817 に答える