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

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

在jUnit 4.x中執行Suite之前和之后的掛鉤

在jUnit 4.x中執行Suite之前和之后的掛鉤

慕絲7291255 2019-09-21 14:45:39
我正在嘗試使用jUnit 4.4執行一組集成測試的設置和拆卸。拆卸需要可靠地運行。我在使用TestNG時遇到其他問題,因此我希望移植回jUnit。在運行任何測試之前以及在完成所有測試之后,可以使用哪些掛鉤執行?注意:我們正在使用Maven 2進行構建。我已經嘗試過使用maven的pre-&post-integration-test階段,但是,如果測試失敗,則maven會停止并且不會運行post-integration-test,這沒有幫助。
查看完整描述

3 回答

?
大話西游666

TA貢獻1817條經驗 獲得超14個贊

是的,可以在測試套件中進行任何測試之前和之后可靠地運行設置和拆卸方法。讓我用代碼演示:


package com.test;


import org.junit.AfterClass;

import org.junit.BeforeClass;

import org.junit.runner.RunWith;

import org.junit.runners.Suite;

import org.junit.runners.Suite.SuiteClasses;


@RunWith(Suite.class)

@SuiteClasses({Test1.class, Test2.class})

public class TestSuite {


    @BeforeClass

    public static void setUp() {

        System.out.println("setting up");

    }


    @AfterClass

    public static void tearDown() {

        System.out.println("tearing down");

    }


}

因此,您的Test1類看起來像:


package com.test;


import org.junit.Test;



public class Test1 {

    @Test

    public void test1() {

        System.out.println("test1");

    }


}

...并且您可以想象Test2看起來很相似。如果運行TestSuite,您將獲得:


setting up

test1

test2

tearing down

因此,您可以看到設置/拆卸僅分別在所有測試之前和之后運行。


要點:僅當您運行測試套件,而不是將Test1和Test2作為單獨的JUnit測試運行時,此方法才有效。您提到您正在使用maven,并且maven surefire插件喜歡單獨運行測試,而不是套件的一部分。在這種情況下,我建議創建一個每個測試類都可以擴展的超類。然后,超類包含帶注釋的@BeforeClass和@AfterClass方法。盡管不如上面的方法那么干凈,但我認為它將為您服務。


至于失敗測試的問題,可以設置maven.test.error.ignore,以便在失敗測試中繼續構建。不建議您將其作為持續的實踐,但是在所有測試通過之前,它應該可以使您正常運行。有關更多詳細信息,請參見maven surefire文檔。


查看完整回答
反對 回復 2019-09-21
?
至尊寶的傳說

TA貢獻1789條經驗 獲得超10個贊

使用注釋,您可以執行以下操作:


import org.junit.*;

import static org.junit.Assert.*;

import java.util.*;


class SomethingUnitTest {

    @BeforeClass

    public static void runBeforeClass()

    {


    }


    @AfterClass

    public static void runAfterClass()

    {  


    }


    @Before  

    public void setUp()

    {


    }


    @After

    public void tearDown()

    {


    }


    @Test

    public void testSomethingOrOther()

    {


    }


}


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

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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