私はテスト実行リスナーを作成しています。 Junit5フレームワークの少しの拡張。 TestIdentifier
とTestPlan
の特定のテストを実行するときにどのクラスが使用されているかを知る必要があります。JUnit5 - 実行されたテストのクラスを取得するための信頼できる方法はありますか?
((MethodSource) id.getSource().get()).getClassName();
テストが宣言のみクラスを与えます。 しかし、それは宣言されたクラスから実行されているわけではありません。
たとえば、テストはサブクラスから実行できます。 TestIdentifier#getUniqueId()
ため
解析結果は、私が見つけられませんでした。このとき (junit4ための単一のテスト、junit5ための単一のテスト、junit5のための動的テスト、junit4ためのパラメータ化テストなど)
を小文字する場合と異なることができますそれを行う可能性があります。
実行されたテストのクラスを取得する信頼できる方法はありますか?
[TestInfo(http://junit.org/junit5/docs/current/api/org/junit/jupiter/api/TestInfo.html)のようなパラメータとして使用に転記され[3.9。 Dependency Injection](http://junit.org/junit5/docs/current/user-guide/#writing-tests-dependency-injection)が役に立ちます。少なくとも、オプションの 'getTestClass()'アクセサがあります。 – Sormuras
不幸なことに、私は考えていません。 TestExecutionListenerは、テストメソッドにparamsとして渡される内容を認識しません。 さらに、すべてのテストメソッドがTestInfoをparamとして持つ必要があることを暗示しています - 必ずしもそうではありません –
私はあなたの要件を厳密に守っていないかもしれません。 JUnit4(私は5と仮定しています)では、あなたの質問の一部を得るために、2つの '@ Rule'アノテーション(1つはTestWatcher()、もう1つはTestName()です)を使用します。また、Thread.currentThread()。getStackTrace()を使用して、スタックトレースから適切な情報を生成しました。 – KevinO