亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

有條件地忽略JUnit 4中的測試

有條件地忽略JUnit 4中的測試

互換的青春 2019-07-22 16:36:04
有條件地忽略JUnit 4中的測試好吧,那么@Ignore注釋有助于標記不應該運行測試用例。但是,有時我想忽略基于運行時信息的測試。例如,如果我有一個并發測試,需要在具有一定數量核心的機器上運行。如果這個測試是在單處理器機器上運行的,我不認為只通過測試是不正確的(因為它還沒有運行),并且肯定不應該失敗測試并破壞構建。因此,我希望能夠在運行時忽略測試,因為這似乎是正確的結果(因為測試框架將允許構建通過,但記錄測試沒有運行)。我確信注釋不會給我這種靈活性,并懷疑我需要手動為所討論的類創建測試套件。但是,文檔中沒有提到任何關于這一點的內容,而是查看了API還不清楚如何以編程方式(即如何以編程方式創建Test或與由@Ignore注釋?)如果有人在過去做過類似的事情,或者對其他事情有一個很好的想法,我會很高興聽到的。
查看完整描述

3 回答

?
qq_笑_17

TA貢獻1818條經驗 獲得超7個贊

JUnit的方法是在運行時執行此操作org.junit.Assume.

 @Before
 public void beforeMethod() {
     org.junit.Assume.assumeTrue(someCondition());
     // rest of setup.
 }

你可以在@Before方法,或者在測試本身中,但不是在@After方法。如果您在測試本身中這樣做,您的@Before方法將運行。你也可以在@BeforeClass若要防止類初始化,請執行以下操作。

假設失敗導致測試被忽略。

編輯:@RunIf注釋JUnit-EXT,它們的示例代碼如下所示:

@Testpublic void calculateTotalSalary() {
    assumeThat(Database.connect(), is(notNull()));
    //test code below.}

更不用說從Database.connect()用這種方法。


查看完整回答
反對 回復 2019-07-22
?
繁花不似錦

TA貢獻1851條經驗 獲得超4個贊

你應該退房Junit-ext項目。他們有RunIf執行條件測試的注釋,如:

@Test@RunIf(DatabaseIsConnected.class)public void calculateTotalSalary() {
    //your code there}class DatabaseIsConnected implements Checker {
   public boolean satisify() {
        return Database.connect() != null;
   }}

[代碼示例摘自教程]


查看完整回答
反對 回復 2019-07-22
?
躍然一笑

TA貢獻1826條經驗 獲得超6個贊

在JUnit 4中,另一個選項可能是創建一個注釋,以表示測試需要滿足您的自定義條件,然后用您自己的方法擴展默認的運行程序,并使用反射,將您的決策建立在自定義條件的基礎上。它看起來可能是這樣的:

public class CustomRunner extends BlockJUnit4ClassRunner {
    public CTRunner(Class<?> klass) throws initializationError {
        super(klass);
    }

    @Override
    protected boolean isIgnored(FrameworkMethod child) {
        if(shouldIgnore()) {
            return true;
        }
        return super.isIgnored(child);
    }

    private boolean shouldIgnore(class) {
        /* some custom criteria */
    }}


查看完整回答
反對 回復 2019-07-22
  • 3 回答
  • 0 關注
  • 891 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號