初学junit, 现总结一下自己对junit使用.
1.使用@Test
在方法上输入@Test , 然后使用ctrl+1,引入org.junit.Test(junit4.5.jar包)
@Test
public void testConn() throws SQLException{
//method
}
然后再outline视图下, 在testConn()方法上 右键run -> junit test, 即可运行,自动打开JUnit 视图.
如下图:
绿色,表示,测试通过. 若出现红色,表示有错误,在下方的Failure trace下,查看错误信息,进行调试.
注意:(1)当使用@Test时, 方法必须为public ,void
2. 继承TestCase使用
今天TL让写一个功能单元测试,我说只会使用@Test,不知怎么写. 直接遭到TL鄙视.赶快回去查了junit的一些资料学习.
2.1 只要测试类 继承junit.framework.TestCase.
然后写个以test开头的方法名称. 如testMethodName(){}. 然后即可右键run as=> junit Test.
public class UploadPlatformMessageTest extends TestCase {
{
public void testTransormAndUpload(){
//method
}
}
2.2 在类中添加main方法:
public static void main(String[] args) {
TestRunner.run( YOURCALSSNAME.class);
}
这样直接 run as, -> java application , 也运行程序中所有以test开头的方法.
3. 当类继承TestCase时, 若定义多个test*()方法 ,右键运行run junit Test, 运行的是哪个testcase?
尝试写连个test*()方法, run as ->junit test, 发现 两个方法都执行.
3.1 怎么运行其中的一个test*方法?
解决:(1) 通过运行main()方法来设置运行哪个test方法:
TestSuite ts = new new TestSuite();
ts.addTest(new UploadPlatformMessageTest("testAsbc"));
TestRunner.run(test);
4. ? ? ? 使用@Test方法时, 此方法必需为public void , 对于有返回值的方法无法使用@Test, 有没有其它替代的解决方案?
使用assertEquals( Object , Object);
e.g.:
public int abc(int i){
return i;
}
@Test
public void testAbc(){
assertEquals(2, abc(2));
}
不知我的理解是否正确?
5. assert()使用
:个人感觉就是,为了测试含有返回值的方法, 见 4
6.
TestCase: abstract 类 ,实现了 junit.framework.Test接口, junit.framework.TestCase
TestSuite: 类, 实现Test接口.
Test: 接口, org.junit.Test
@Test 注解: org.junit.Test 注解类型: public abstract @interface org.junit.Test extends java.lang.annotation.Annotation {..}
7.jnuit bug
测试时, 什么异常都不报.
8 问题总结:
? ? ?
junit的使用 有@Test 和 继承TestCase 两种办法. @Test是Junit的 新的特性 ,使用容易 . 而继承TestCase方法是以前使用方法?