锁定老帖子 主题:junit4学习探讨
精华帖 (0) :: 良好帖 (0) :: 新手帖 (2) :: 隐藏帖 (6)
|
|
---|---|
作者 | 正文 |
发表时间:2011-03-07
最后修改:2011-03-07
初学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 视图. 如下图:
注意:(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方法是以前使用方法?
声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2011-03-07
1.assert的使用是来检验你代码最后运行的结果是否和你想象的一致,也就是正常来说,你在你的单元测试里都要用assert来判断是否正常,而不能看运行一下,看是绿了就通过了,这只能保证你写的程序在运行时没有报异常,而我们校验一个方法的时候往往都是有预期值的.
比如你执行了一个dao的insert(User user)方法,之后,你可以通过 assertNotNull(message,user.getId())来判断是否正确的插入了 我一般习惯喜欢assert中加message的方法,因为这样可以知道你具体错在哪里了 2.还有就是如果想只运行一个方法,可以直接在方法上右键,run as -- junit test 3.你说什么异常都报,可以看看控制台的信息,可能是你自己catch住了 |
|
返回顶楼 | |
发表时间:2011-03-07
最后修改:2011-03-07
4 . 有个东西叫mock
7 . 不要加太多框架设计在junit中,spring框架常常把事务挂了....表现就是死活不完.... |
|
返回顶楼 | |
发表时间:2011-03-07
finallygo 写道 1.assert的使用是来检验你代码最后运行的结果是否和你想象的一致,也就是正常来说,你在你的单元测试里都要用assert来判断是否正常,而不能看运行一下,看是绿了就通过了,这只能保证你写的程序在运行时没有报异常,而我们校验一个方法的时候往往都是有预期值的.
比如你执行了一个dao的insert(User user)方法,之后,你可以通过 assertNotNull(message,user.getId())来判断是否正确的插入了 我一般习惯喜欢assert中加message的方法,因为这样可以知道你具体错在哪里了 2.还有就是如果想只运行一个方法,可以直接在方法上右键,run as -- junit test 3.你说什么异常都报,可以看看控制台的信息,可能是你自己catch住了 谢谢, 我对asset有了认识了. 有个问题: 就是使用@Test 还是 继承TestCase 方法来进行,junit测试呢? |
|
返回顶楼 | |
发表时间:2011-03-08
3.x版本的是 用继承的方式,4.x版本的是用注解,用哪种都可以,个人比较喜欢3.x版本的
|
|
返回顶楼 | |
发表时间:2011-03-08
JUnit4跟TestNG比起来,还是觉得TestNG更加方便灵活。
|
|
返回顶楼 | |
发表时间:2011-03-08
最后修改:2011-03-08
看来最近人品不错,学什么的时候就有人发什么样的帖子
http://licg1234.iteye.com/admin/blogs/946129 |
|
返回顶楼 | |
发表时间:2011-03-08
单单的使用Junit 在很多情况下你会发现没法测试的,比如与上下文相关的。向楼上有位大侠所说的,看看mock这东西,之前我短暂使用JMock,不过发现几种情况下还是没法测试,因为代码写的不好的缘故吧,后来代码重构了,基本都能测试了,RMock,EasyMock也不错,推荐楼主看看
|
|
返回顶楼 | |
发表时间:2011-03-08
finallygo 写道 3.x版本的是 用继承的方式,4.x版本的是用注解,用哪种都可以,个人比较喜欢3.x版本的
哦, 这我明白了 为什么老开发人员都是用testcse, 而我们新学的感觉注解@Test 更简单易用 |
|
返回顶楼 | |
发表时间:2011-03-08
angie_hawk7 写道 单单的使用Junit 在很多情况下你会发现没法测试的,比如与上下文相关的。向楼上有位大侠所说的,看看mock这东西,之前我短暂使用JMock,不过发现几种情况下还是没法测试,因为代码写的不好的缘故吧,后来代码重构了,基本都能测试了,RMock,EasyMock也不错,推荐楼主看看
好的 谢谢 , 我有空会看看的. 经过大家的讨论 我明白了多 |
|
返回顶楼 | |