在Junit4以前,要做基于单元的测试, 需要重新定义一个类,有关此种方法的测试已经有很多的资料,有兴趣的可以查看一下。
现在已经有很多的测试框架,可以是基于Java 注释的,用这种方法测试时,不用再新建一个新的类,在类的内部进行测试。JUnit4 就支持这种功能.
如下,新建一个类:
public class SampleTest
{
public int getInt()
{
return 10;
}
}
现在,要测试SampleTest 类的getInt方法,此时,不需要新建一个类,而是在类的内部做如下的变动:
import static org.junit.Assert.*;
import org.junit.Test;
public class SampleTest
{
public int getInt()
{
return 10;
}
@Test
public void MyTest()
{
assertEquals(getInt(), 10);
}
}
然后,run as JUnit Test ,就可以看到大家熟悉的进度条,如果通过,是绿色的,当然,红色是没有通过。
同时,很时显,如果要用到 Junit4, 需要在项目中引用 Juit4,可不是 Junit3 呀,因为,Junit3 不支持基于注释的测试。
从上面的代码可以看到,把原来需要在新建测试类中增加的测试方法,用一个“@Test”引入到自已类中来,这种测试方法很简单,也很方便。
另外,Junit4 还提供了其它的一些 Annotation, 比如,想忽略一个测试方法,却又不想删除它,怎么办?
import static org.junit.Assert.*;
import org.junit.Ignore;
import org.junit.Test;
public class SampleTest
{
public int getInt()
{
return 10;
}
@Test
public void MyTest()
{
System.out.println("开始 MyTest 测试");
assertEquals(getInt(), 10);
}
@Ignore
@Test
public void MyTestOfIgnore()
{
System.out.println("开始 MyTestOfIgnore 测试");
assertEquals(getInt(), 10);
}
}
输出如下:
开始 MyTest 测试
虽然测试了两个方法,但其实第二个方法MyTestOfIgnore 是没有测试的,被忽略了。如果用到这个Annotation,相应的要引入一些包。
import org.junit.Ignore;
还有以下的一些 Annotation:
@Before 测试前的初始化
@After 测试完成后的释放资源
@BeforeClass 在测试前针对所有的测试,只执行一个,该方法必须为 void static
@AfterClass 在测试后针对所有的测试执行,只执行一次,也是 void static
以上所有的 Annotation, 按如下的顺序执行:
@BeforeClass
↓
@Before
↓
@Test
↓
@After
↓
@AfterClass