`
qdpurple
  • 浏览: 276729 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

junit4学习探讨

阅读更多

初学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方法是以前使用方法? 

 

 

 

  • 大小: 6.2 KB
分享到:
评论
17 楼 shaka 2011-03-10  
抛出异常的爱 写道
shaka 写道
讨论下:
    如何在每个方法前初始化数据库数据,结束后销毁数据,不要告诉我在setUp里面插入数据,在tearDown里删除,需要系统的解决方案.

现阶段我们只好用 事务回滚 方式作数据库测试
还有几种方式但我个人认为不是非常的爽
比如测试用本机测试库
比如dbunit xml配置基础信息


数据这部分一直是单元测试的痛,我觉得rails框架那种天然集成单元测试的方式很舒服,在每个测试前后使用夹具来提交和回退测试数据,Java里面似乎就没类似的工具。
16 楼 Foxswily 2011-03-10  
抛出异常的爱 写道
shaka 写道
讨论下:
    如何在每个方法前初始化数据库数据,结束后销毁数据,不要告诉我在setUp里面插入数据,在tearDown里删除,需要系统的解决方案.

现阶段我们只好用 事务回滚 方式作数据库测试
还有几种方式但我个人认为不是非常的爽
比如测试用本机测试库
比如dbunit xml配置基础信息


简单封装dbunit,测试类只要提供测试数据xml,数据导出备份在封装的setup teardown搞定,处理好异常基本就够了,推荐基于testNG,junit的静态@BeforeClass太恶心
15 楼 抛出异常的爱 2011-03-09  
shaka 写道
讨论下:
    如何在每个方法前初始化数据库数据,结束后销毁数据,不要告诉我在setUp里面插入数据,在tearDown里删除,需要系统的解决方案.

现阶段我们只好用 事务回滚 方式作数据库测试
还有几种方式但我个人认为不是非常的爽
比如测试用本机测试库
比如dbunit xml配置基础信息
14 楼 shaka 2011-03-09  
讨论下:
    如何在每个方法前初始化数据库数据,结束后销毁数据,不要告诉我在setUp里面插入数据,在tearDown里删除,需要系统的解决方案.
13 楼 shaomeng95 2011-03-09  
最近我也写了个【junit的使用指南和作业规范】,望指教!
http://www.iteye.com/topic/947919
12 楼 ziliang871118 2011-03-09  
如果暂时不需要测试的方法,在方法名上加注解 @Ingore即可
11 楼 Foxswily 2011-03-08  
更喜欢testNG,junit太固执不化
10 楼 lzmhehe 2011-03-08  
有些东西使用写单元测试很好
有些东西东西写单元测试就是徒增烦恼

纸上得来终觉浅
9 楼 qdpurple 2011-03-08  
angie_hawk7 写道
单单的使用Junit 在很多情况下你会发现没法测试的,比如与上下文相关的。向楼上有位大侠所说的,看看mock这东西,之前我短暂使用JMock,不过发现几种情况下还是没法测试,因为代码写的不好的缘故吧,后来代码重构了,基本都能测试了,RMock,EasyMock也不错,推荐楼主看看


好的 谢谢 , 我有空会看看的. 经过大家的讨论 我明白了多
8 楼 qdpurple 2011-03-08  
finallygo 写道
3.x版本的是 用继承的方式,4.x版本的是用注解,用哪种都可以,个人比较喜欢3.x版本的

哦, 这我明白了 为什么老开发人员都是用testcse, 而我们新学的感觉注解@Test 更简单易用
7 楼 angie_hawk7 2011-03-08  
单单的使用Junit 在很多情况下你会发现没法测试的,比如与上下文相关的。向楼上有位大侠所说的,看看mock这东西,之前我短暂使用JMock,不过发现几种情况下还是没法测试,因为代码写的不好的缘故吧,后来代码重构了,基本都能测试了,RMock,EasyMock也不错,推荐楼主看看
6 楼 licg1234 2011-03-08  
看来最近人品不错,学什么的时候就有人发什么样的帖子

http://licg1234.iteye.com/admin/blogs/946129
5 楼 michaelyung 2011-03-08  
JUnit4跟TestNG比起来,还是觉得TestNG更加方便灵活。
4 楼 finallygo 2011-03-08  
3.x版本的是 用继承的方式,4.x版本的是用注解,用哪种都可以,个人比较喜欢3.x版本的
3 楼 qdpurple 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测试呢?
2 楼 抛出异常的爱 2011-03-07  
4 . 有个东西叫mock 
7 . 不要加太多框架设计在junit中,spring框架常常把事务挂了....表现就是死活不完....
1 楼 finallygo 2011-03-07  
1.assert的使用是来检验你代码最后运行的结果是否和你想象的一致,也就是正常来说,你在你的单元测试里都要用assert来判断是否正常,而不能看运行一下,看是绿了就通过了,这只能保证你写的程序在运行时没有报异常,而我们校验一个方法的时候往往都是有预期值的.
比如你执行了一个dao的insert(User user)方法,之后,你可以通过
assertNotNull(message,user.getId())来判断是否正确的插入了
我一般习惯喜欢assert中加message的方法,因为这样可以知道你具体错在哪里了
2.还有就是如果想只运行一个方法,可以直接在方法上右键,run as -- junit test
3.你说什么异常都报,可以看看控制台的信息,可能是你自己catch住了

相关推荐

    Junit4.zip

    本文将深入探讨JUnit4的核心特性、使用方法以及如何将其应用到实际项目中。 首先,我们要明白单元测试的重要性。在软件开发过程中,单元测试是确保代码质量的第一道防线,它能够帮助开发者尽早发现和修复问题,提高...

    junit3.8 和junit4 api

    这里我们将深入探讨JUnit 3.8和JUnit 4两个版本的主要API及其差异。 **JUnit 3.8 API** JUnit 3.8是JUnit的一个早期版本,它的API设计相对简单,主要包含以下关键组件: 1. **测试类和测试方法**:在JUnit 3中,...

    学习JUnit4过程中的总结

    下面我们将深入探讨JUnit4的核心特性、如何使用以及它在软件开发中的重要性。 首先,JUnit4引入了注解(Annotation)的概念,使得测试类和方法的声明更加简洁直观。例如,`@Test`注解标记在测试方法上,表示这是一...

    Junit测试学习文档

    本学习文档将深入探讨Junit测试的基本概念、用法以及高级特性。 一、Junit简介 Junit是由Ernst von Brucke和Erich Gamma创建的一个开源项目,它是Java平台上的一个单元测试框架,用于编写和运行可重复的测试。通过...

    Junit4测试用例示例

    本教程将深入探讨Junit4测试用例的使用,帮助你理解和实践其核心概念。 一、Junit4简介 Junit4是JUnit系列的第四个主要版本,由Erich Gamma和Kent Beck共同设计。它引入了许多新特性,如注解(Annotations)、测试...

    Junit4测试总结

    在提供的`Junit4Demo`压缩包中,包含了使用JUnit4进行单元测试的示例代码,你可以参考学习,进一步理解JUnit4的使用方式。 总结,JUnit4作为Java单元测试的核心工具,其强大的功能和易用性使得它在软件开发中扮演着...

    Junit4的应用案例

    本案例主要探讨Junit4在实际项目中的应用,通过具体的测试类和源代码,我们将深入理解其核心特性和优势。 一、Junit4简介 Junit4是由Eclipse基金会维护的开源项目,它基于JUnit3进行了重大改进,引入了注解...

    JUnit4的实例代码

    在本文中,我们将深入探讨JUnit4的一些核心概念、特性以及如何通过实例代码进行使用。 首先,JUnit4引入了注解(Annotations)的概念,这是对传统基于接口的测试模式的重大改进。例如,`@Test`注解标记测试方法,`@...

    junit 入门培训ppt

    本文将深入探讨JUnit入门培训的关键概念和技术。 首先,我们要理解什么是Test Driven Development(TDD),即测试驱动开发。TDD是一种软件开发方法论,它提倡在编写实际业务代码之前先编写测试。通过这种方式,...

    Junit白盒测试学习文档

    本文档将深入探讨Junit4的基础知识和应用技巧,帮助开发者提升测试效率和代码质量。 **一、Junit简介** Junit是由Erich Gamma和Kent Beck共同创建的开源测试框架,它提供了一种简单的方式来编写和运行针对Java类的...

    JUnit3.8的初步学习

    在本文中,我们将深入探讨JUnit3.8的基础知识,了解其核心概念、用法以及如何在实际项目中应用。 首先,我们来理解什么是单元测试。单元测试是一种软件开发方法,它允许开发者独立地测试程序的各个小部分,即“单元...

    junit-4.12.jar下载

    让我们深入探讨一下JUnit 4.12及其相关文件。 首先,`junit-4.12.jar`是JUnit的核心库,包含了运行和编写单元测试所需的所有类和接口。使用这个库,开发者可以创建测试类,定义测试方法,并使用各种断言来检查程序...

    Jump into Junit4

    在本篇综述中,我们将深入探讨JUnit4的核心特性及其带来的新功能,包括参数化测试、异常测试和计时测试等,并介绍如何利用注解来逻辑分组测试用例。 #### Java 5 注解带来的变革 Java 5 的引入为JUnit带来了巨大的...

    Junit学习笔记

    通过这份Junit学习笔记,你可以掌握单元测试的基本思想,熟练运用JUnit进行代码质量的保障。在实际开发中,单元测试不仅能帮助找出错误,还能在重构时提供安全保障,提高代码质量。不断学习和实践,你会发现自己在...

    log4j,Junit 学习

    标题“log4j, Junit 学习”暗示了我们要探讨的两个关键主题:Log4j 和 JUnit。Log4j 是一个广泛使用的Java日志框架,它提供了灵活的日志记录功能,有助于调试和监控应用程序。JUnit 是一个用于单元测试的Java库,是...

    Junit 4.0 学习笔记

    本文将深入探讨JUnit 4.0版本的主要特性、核心概念以及如何有效利用它进行单元测试。 一、JUnit 4.0 特性概述 1. 注解驱动测试:JUnit 4.0引入了注解(Annotation)的概念,使得测试类和方法更加简洁易读。例如,`...

    JUnit in action JUnit Recipies

    书中还探讨了异常测试,通过@Test注解配合expected参数可以测试预期抛出的异常。 接着,书中介绍了参数化测试,这是一种强大的特性,允许使用不同的输入数据集运行同一个测试方法,从而实现对同一功能的多方面验证...

    Junit4.8.2(Junit4.7)

    在本篇中,我们将详细探讨JUnit 4.8.2和4.7这两个版本,以及它们在测试过程中的应用。 首先,JUnit 4.8.2是JUnit系列的一个稳定版本,相较于早期的4.7版本,它可能包含了修复的bug、性能改进和新的特性。在JUnit 4....

    Lab_2_junit4_

    在Lab_2中,你将学习如何配置Eclipse以使用Junit4,编写基本的测试用例,以及如何通过Eclipse的插件或外部工具来分析代码覆盖率。这不仅有助于确保代码的质量,还能在开发早期发现潜在问题,减少后期维护的成本。 ...

Global site tag (gtag.js) - Google Analytics