簡體   English   中英

如何控制 JUnit 是否創建正在測試其行為的類的實例?

[英]How can I control whether JUnit creates an instance of the class whose behaviour is being tested?

我注意到 JUnit 隱式地​​創建了我的測試類的一個實例。 我已經向構造函數添加了自己的調用,這不會阻止 JUnit 創建實例; 最終結果是創建了兩個實例,如下面的控制台輸出所示。 我覺得這很令人費解。 為什么會發生這種情況,我如何控制/阻止 JUnit 創建實例? 谷歌搜索“junit 隱式對象創建”沒有顯示任何內容,但我能夠通過調試測試看到調用構造函數的位置。 我不明白的是為什么會發生這種情況,什么時候我們有自己的地方可以做,以及如何防止它發生。 我在日食光子中使用 JUnit 4。 謝謝。

public class MainTest extends Main {

    static Main m;

    @BeforeClass
    public static void setUpBeforeClass() throws Exception {
        System.out.println("setUpBeforeClass");
        m = new Main();

    }

    @AfterClass
    public static void tearDownAfterClass() throws Exception {
        System.out.println("tearDownAfterClass");
    }

    @Before
    public void setUp() throws Exception {
        System.out.println("setup");
    }

    @After
    public void tearDown() throws Exception {
        System.out.println("tearDown");
    }

    @Test
    public void testAdd() {
        assertEquals(8,m.add(3,5));
    }

}

控制台輸出:

setUpBeforeClass
Main()
Main()
setup
tearDown
tearDownAfterClass

您的測試用例擴展了 Main 類,這意味着在創建 MainTest 類和顯式調用new Main()調用構造函數,刪除extends Main並且您會很好

暫無
暫無

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

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