JUnit测试类在没有main方法的情况下运行。这怎么做/可能?

时间:2013-10-08 22:36:13

标签: java 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

1 个答案:

答案 0 :(得分:4)

没有main(String[])方法,没有Java应用程序可以运行。这是单一切入点。对于JUnit测试,此方法通常隐藏在插件后面。对于Eclipse,这似乎是org.eclipse.jdt.internal.junit.runner.RemoteTestRunner

在您发布的链接中,他们建议java org.junit.runner.JUnitCore设置您的@Test注释方法和Suite并运行它们。以类似的方式,Ant具有JUnitTask,在某处(如果您查看其源代码)创建一个运行测试的运行器。这似乎是JUnitTestRunner,由于Ant任务,它实际上在自己的JVM中运行。