嗨,我得到了一個抽象的 BaseTest 和第二個這個 BaseTest 的 2 屬性實作
我想在屬性類上呼叫所有@Test。
一些代碼:
public abstract class BaseTest<T> {
public abstract T getInstance();
@BeforeEach
public void setup(){
this.instance = getInstance();
}
@Test
all test methods ....
我想用這個 BaseTest 的 2 個實作創建第二個類,比如
class TwoImplOfBaseTest {
private BaseTest<Integer> testA;
private BaseTest<String> testB;
@Test
public void testAll(){
//write something like testA.doAllTest();
//write something like testB.doAllTest();
}
謝謝閱讀
uj5u.com熱心網友回復:
我認為你把它復雜化了。如果我理解正確,由于 A 和 B 之間的常見測驗用例,您有 BaseTest 類。@Test 和幾乎所有其他 junit 注釋都是從超類繼承的,除非該方法被覆寫。在這種情況下,您只需要創建 BaseTest 的具體實作。JUnit 將初始化測驗類實體,運行所有 @Test 方法等。
public class TestA extends BaseTest<Integer> {
//init stuff if needed
}
和其他類
public class TestB extends BaseTest<String> {
//init stuff if needed
}
就是這樣,junit runner 將從 BaseTest 為 TestA 然后為 TestB 運行所有 @Test 方法。
uj5u.com熱心網友回復:
如果您的目標是運行@Test抽象類中的所有方法以及所有擴展類,那么這已經發生了。您可以通過任何 IDE(Intellij/Eclipse)對此進行測驗
但是,如果目標是以編程方式選擇 N 個類,并直接從 Java 運行它們的方法,那么您可以按如下所述進行:
在我看來,最好遵循其他答案,因為這允許報告插件直觀地向您顯示通過/失敗的內容和統計資訊。
這取決于您要實作的目標:
public class RunJUnit5TestsFromJava {
SummaryGeneratingListener listener = new SummaryGeneratingListener();
public void runASingleClass() {
LauncherDiscoveryRequest request = LauncherDiscoveryRequestBuilder.request()
.selectors(selectClass(FirstUnitTest.class))
.build();
Launcher launcher = LauncherFactory.create();
TestPlan testPlan = launcher.discover(request);
launcher.registerTestExecutionListeners(listener);
launcher.execute(request);
}
public void runAllClassesUnderPackage() {
LauncherDiscoveryRequest request = LauncherDiscoveryRequestBuilder.request()
.selectors(selectPackage("com.package.where.your.test.classes.are"))
.filters(includeClassNamePatterns(".*Test"))
.build();
Launcher launcher = LauncherFactory.create();
TestPlan testPlan = launcher.discover(request);
launcher.registerTestExecutionListeners(listener);
launcher.execute(request);
}
}
RunJUnit5TestsFromJava runner = new RunJUnit5TestsFromJava();
runner.runAll();
TestExecutionSummary summary = runner.listener.getSummary();
summary.printTo(new PrintWriter(System.out));
參考:https : //www.baeldung.com/junit-tests-run-programmatically-from-java
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/407854.html
標籤:
