2013-10-08 25 views
2

比如這裏...JUnit測試程序類在沒有主要方法的情況下運行。這是如何完成/可能的?

import static org.junit.Assert.assertEquals; 
import org.junit.Test; 

public class StaticCalculationTest { 

    @Test 
    public void addSubTest() { 
     // assertEquals(String message, long expected, long actual) 
     assertEquals("Error in add()!", 3, StaticCalculation.add(1, 2)); 
     assertEquals("Error in sub()!", 1, StaticCalculation.sub(2, 1)); 
    } 

    @Test 
    public void mulDivTest() { 
     assertEquals("Error in mul()!", 6, StaticCalculation.mul(2, 3)); 
     // assertEquals(String message, double expected, double actual, double delta) 
     assertEquals("Error in div()!", 0.5, StaticCalculation.div(1, 2), 1e-8); 
    } 
} 

上面的示例摘自:http://www3.ntu.edu.sg/home/ehchua/programming/java/JUnit_Ant.html

+2

有一個'main()'方法,但它通常隱藏在某個IDE或其他插件中。就像在你發佈的鏈接中一樣,類java'org.junit.runner.JUnitCore'有'main()'方法,用於運行測試。 –

+0

@SotiriosDelimanolis - 這應該是一個答案,而不是一個評論。我想請你高興。 –

+1

@DavidWallace你讓我做了工作:) –

回答

4

任何Java應用程序可以在沒有main(String[])方法運行。這是單一的入口點。對於JUnit測試,這種方法通常隱藏在插件後面。對於Eclipse,這似乎是org.eclipse.jdt.internal.junit.runner.RemoteTestRunner

在您發佈的鏈接中,他們建議java org.junit.runner.JUnitCore設置您的@Test註釋方法和Suite並運行它們。以類似的方式,AntJUnitTask某處(如果你通過它的源代碼)創建一個跑步者來運行你的測試。這似乎是JUnitTestRunner,由於Ant任務,它實際上運行在它自己的JVM中。

相關問題