2009-05-12 2 views
7

のコードの使用を介して電流テストの名前:それはしたいよう出力私はこのようになりますすべての私のテストの一番上にラインを現在持っている[設定]方法

Console.WriteLine(System.Reflection.MethodBase.GetCurrentMethod().Name); 

らしいですInitメソッド(これは[Setup]というタグが付けられています)に入れてもいいですか?私はこれがうまくいくと思ったが、私が得ることができるスタックフレームの番号が何であっても、Initである。

Nunitがテストを実行する方法を考えれば、これは可能ではないかもしれないと思います。

なぜこれを行うのですか?私のコンソール出力では、新しいテストがどこから来たのかを知ることができて、同じコードを出力して異なる値を出力すると、デバッグすることなく、どちらが何をしたのか分かります。

+0

@Miwilによって答えははるかに優れたソリューションです - あなたでしょう受け入れられた答えを変更することを検討してください – skolima

+0

@skolima確かに、それが受け入れられた答えよりもupvotesを得る場合 – jcollum

答えて

6

TestCaseAttributeはNUnit 2.5まで追加されていないため、見つからない可能性があります。しかし、残念なことに、SetUpメソッドはテストメソッドの前から呼び出されるので、テストメソッドのコンテキストから呼び出されることはありません(呼び出しスタックには表示されません)。

幸いにも、NUnitは既にあなたがしようとしていることをサポートしています! GUIから、Tools> Options> GUI> General> Text Outputに移動し、 'TestCase Labelsを表示'にチェックを入れます。または、コンソールランナーの場合は、パラメータに/labelsを追加するだけです。

0

NUnit.Core.NUnitFramework.TestCaseAttributeを使用すると、現在のテスト名を取得できます。

+0

よく最初の問題は存在しないということです。私が見つけた最も近いものは 'NUnit.Framework.TestAttribute"の値を返した 'NUnit.Core.NUnitFramework.TestAttribute'でした。 – jcollum

13

次は私を助けることができる:ここで

string testName = NUnit.Framework.TestContext.CurrentContext.Test.Name; 
string testFullName = NUnit.Framework.TestContext.CurrentContext.Test.FullName; 
1

は、私は、ファイルに各テストのログを記録するために使用するVBです:

<SetUp()> 
Public Sub Setup() 
    Logging.logTest(NUnit.Framework.TestContext.CurrentContext.Test.Name) 
End Sub 
関連する問題