簡體   English   中英

如何制作一個基於測試類列表有條件地運行測試的JUnit測試套件?

[英]How do I make a JUnit Test Suite that runs tests conditionally based on a list of Test Classes?

我需要制作一個基於用戶提供的輸入文件來運行測試的JUnit測試套件。 IE,如果用戶說應該運行10個測試中的5個,則將運行這5個測試,僅此而已。 有沒有辦法獲取包含測試我的案例的類列表並僅運行它們? 我試圖為此使用for循環

for (Class a: classes)
    JUnitCore.runClasses(a);

但是我得到這個錯誤

Exception in thread "main" java.lang.NoClassDefFoundError: org/junit/runner/JUnitCore
at TestRunner.main(TestRunner.java:56)
Caused by: java.lang.ClassNotFoundException: org.junit.runner.JUnitCore
at java.net.URLClassLoader$1.run(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
... 1 more

有兩種選擇。

使用類別亞軍

它允許您“標記”測試並通過標記構建測試套件。 您可以查看文檔: https : //github.com/junit-team/junit/wiki/Categories

優點:

  • 容易設定
  • 只有標有類別的測試才能運行

缺點:

  • 固定測試套件,要更改它們,您必須更改測試代碼

使用規則

編寫您的測試規則,並在此規則中忽略(通過拋出AssumptionViolatedException)不在列表中的所有測試。 文檔在這里:

https://github.com/junit-team/junit/wiki/規則

查看TestWatcher規則,該規則在傳遞給其方法的Description對象中具有有關測試類名稱和方法名稱的信息。

優點:

  • 非常靈活的測試套件

缺點:

  • 較難設定
  • 所有測試都已運行,但那些不在列表中的測試將被忽略,即即使沒有運行測試,也可能觸發某些@Before和@After方法
  • 您所有的測試都必須使用此規則,不使用規則的測試將照常運行

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM