web-dev-qa-db-ja.com

プログラムでNUnitテスト名にアクセスするにはどうすればよいですか?

現在実行中のテスト名にアクセスできるグローバル状態はどこかにありますか?

ファイルをディレクトリに出力して読み戻すテストがあります。各テストで再生するディレクトリを作成してからクリーンアップしたいのですが、その名前をプッシュしたくありません(一意にする必要があります。次に、各テストで一意に保つようにします。 GUIDを使用することもできますが、ヘルパーメソッドがGUIDをプッシュする必要なしに、「これはテストファイルを格納する場所です」と想定できるようにしたいと思います。 、これはどこかのグローバル状態を促進します。

基本的に、TestRunner.Current.CurrentTest.Nameのような呼び出しが必要です。そのようなものは存在しますか?

39
TALlama

私はまだ2.5.7にアップグレードしていませんが、探しているものを提供しているように見えるTestContextクラスが含まれています: http://www.nunit.org/index .php?p = releaseNotes&r = 2.5.7

24
Martin R-L

(c#を想定)

NUnit.Framework.TestContext.CurrentContext.Test.Name 

または

NUnit.Framework.TestContext.CurrentContext.Test.FullName

または、本当に怠け者で、TestCaseSourceを使用してテストを実行していない場合(@aolszowkaに感謝):

this.GetType().ToString()
35
Izzy

テストごとに1つのメソッドを想定すると、NUnitコードでは、リフレクションを使用してスタックトレースからメソッド名を取得できます。

このファイルロギングを行うために他のメソッドによって呼び出されるNUnitコードにヘルパーメソッドを記述する場合、この構文を使用して前のメソッドをチェックできます。

string MethodName = new StackFrame(1).GetMethod().Name;

詳細については、 質問44153「リフレクションを使用して現在実行中のメソッドの名前を見つけることができますか?」 の回答を参照してください。

4
Paddyslacker