[英]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.