我正在編寫測試執行監聽器。 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。依賴注入](http://junit.org/junit5/docs/current/user-guide/#writing-tests-dependency-injection)可能有所幫助。至少,有一個可選的'getTestClass()'訪問器。 – Sormuras
不幸的是,我不認爲這種情況。 TestExecutionListener不知道作爲參數傳遞給測試方法的內容。 此外,它暗示每個測試方法都必須將TestInfo作爲參數 - 它並不總是如此 –
我可能沒有完全按照您的要求。在JUnit4中(&我假設5),我們使用了幾個'@ Rule'註解(一個是TestWatcher(),另一個就是TestName())來獲取問題的一部分。我們還使用了Thread.currentThread()。getStackTrace()並從堆棧跟蹤中發出適當的信息。 – KevinO