`
slowman
  • 浏览: 38400 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

使用Junit4的时候一个小问题

阅读更多

 

 

     JUnit4.X出来已经很久了,一直没有去尝试使用一下,(这也是自己的一个不足,不太喜欢去尝试新新鲜的工具。我想这对于IT人员来,恐怕是一个很大的不足。)今天突然心血来潮去体验了一下。却发现一个奇怪的问题。如下描述:

我在自己的电脑上写了一个测试程序,用来体验Junit4.7的新功能,没有任何问题,但是呢,将自己的代码拷另外一机子上,然后打开就不行了。Eclipse老是提示assertThat(***)这个方法unresolved,我的第一反就是是没有导入hamcrest包,但是检查buildpath发现导入了hamcrest的core和library这两个包,也就是说是对的呀,但是MyEclipse就是说有问题。百思不得其解,今天在网上看到另外一篇blog,才明白了原因所在。

      原来我在新工程里面,添加junit4的jar包的时候,是添加了MyEclipse7.5自带的junit library.而在自己在之前做测试的时候,使用的是自己从网上下载的junit  jar包,然后手动导入的。junit4中有一个新的特性就是使用assertThat()这个测试方法。这个方法需要引入hamcrest包,使用hamcrest时不能用IDE提供的Junit4 JAR包,因为classloader不同。所以把工程中的junit4 library remove掉,然后手工导入下载的junit包,问题得到解决。

顺便介绍一下Junit4常用东东吧。

    Junit4.x中的annotations:

   @Test(expected=java.lang.ArimeticException,timeout=300),

   @Ignore:被忽略的测试方法,

   @Before:在所有测试方法之前运行,

   @After:在所有测试方法之后运行,

   @BeforeClass(static方法):在测试对象生成之前运行,可以用于开启数据库等一些操作

   @AfterClass(static方法):在所有测试方法结束之后运行。

 

 

Error与Failure:后者呢表示测试失败,而前者表示程序运行错误,此时是不管测试失败与否的。

 

测试类如下:

 

 

 

 

package cn.edu.ccnu.inc.lwm.junit; 
public class A {
 /** * @param args */ 
public int add(int x,int y) 
{ return x+y ; } 
public int sub(int x,int y ) 
{ return x-y ; } } 

 

 

 

 

 

 

 

 

 

 

 

 

 

针对A的测试类:

package cn.edu.ccnu.inc.lwm.junit.test; 
import static org.junit.Assert.*; 
import org.hamcrest.Matcher; 
import org.junit.After; 
import org.junit.AfterClass; 
import org.junit.Before; 
import org.junit.BeforeClass; 
import org.junit.Ignore;
import org.junit.Test;
import cn.edu.ccnu.inc.lwm.junit.A;
import static org.hamcrest.Matchers.* ;
/**
 * 注意:要使用assertThat()必须引入 org.hamcrest.Matchers.* ;
 * 
 * @date 2010-1-20 *
 * @author Administrator
 * 
 */ 
public class ATest { private A obj = null; 
/**
 * *
 * 
 * @BeforeClass
 * @AfterClass 必须是静态的. * 在实例还没有生成的时候就加载了。 *
 *             用在当我们要在测试之前获取一些资源的时候,比如说取得数据库连接,可以用@BeforeClass() *
 *             测试完毕后,释放资源的时候使用@afterClass() *
 */ 
}
@BeforeClass
public static void beforeClass() 
{ System.out.println("before class"); } 
@AfterClass 
public static void afterClass() 
{ System.out.println("after class"); } 
/**
 * *
 * 
 * @Before
 * @After 是指所有的测试方法执行之前或者之后 *
 * @throws Exception
 */
@Before
public void setUp() throws Exception 
{	 obj = new A();
	System.out.println("before"); 
} 
@After 
public void tearDown() throws Exception 
{ 
	System.out.println("after"); 
} 
/** * 表明这是一个测试方法 * */
@Test 
public void testAdd()
{ 
	int z = obj.add(3, 5) ; 
    assertEquals("应该是相等的",8, z) ;
    assertThat(z, is(8)) ; }
}
/**
 * *
 * 
 * @Ignore 标明这个测试方法要忽略掉. *
 */
@Ignore @Test public void testSub()
{ int z = obj.sub(9,2) ; 
   assertThat(z, is(7)) ; }
} 
}

 

 

 

 

 

分享到:
评论
3 楼 jijiajia19 2010-07-24  
junit一般的写小项目用的不是很多
2 楼 slowman 2010-01-30  
嗯,junit3和4确实没有大的改变,感觉就是测试方法更加符合西方人的习惯吧。
TestNG我还没有胜过哦,汗
1 楼 jashawn 2010-01-30  
junit4和TestNG比起来还是有差距,junit4比起junit3来并没有跨越式的变化,导致习惯junit3的人也没有心情切换到junit4

相关推荐

    Junit4 所需要的jar

    描述中提到,这个包包括了两个重要的JAR文件,一个是JUnit的核心库,另一个则是可能的JUnit的依赖项,因为有时候仅仅导入JUnit的核心库并不足以让测试正常运行,还需要额外的依赖。 首先,我们来详细了解一下JUnit ...

    Junit5用户手册

    - **JUnit Vintage**:这是一个向后兼容的模块,允许在JUnit5环境下运行JUnit3和JUnit4编写的测试用例。 **1.2 支持的Java版本** JUnit5支持多个Java版本,包括Java 8及以上版本。这意味着开发人员可以根据项目的...

    JUnit4利用反射机制测试类的私有成员

    总结来说,JUnit4结合Java的反射机制可以让我们在必要的时候测试类的私有成员,确保代码的完整性和正确性。但在实际应用中,应谨慎使用反射,因为它可能会引入额外的复杂性和潜在的安全风险。优先考虑重构代码,使...

    Junit入门练习代码

    在Java编程领域,JUnit是一个广泛使用的单元测试框架,它使得开发者能够轻松地为自己的代码编写自动化测试用例。本资源“Junit入门练习代码”旨在帮助初学者掌握JUnit的基本概念和使用方法,通过实践来加深理解。...

    Junit4学习教程.doc

    总结起来,JUnit4 是一个强大的单元测试框架,它的核心在于利用 Java 5 的注解特性简化了测试代码的编写。通过注解,我们可以更方便地定义测试前的准备、测试后的清理、以及期望的测试行为。JUnit4 提供的多种注解使...

    junit4-r4.12.tar.gz

    使用是导入包的方案:junit.jar + hamcrest-core.jar + hamcrest-library.jar 或者是:junit-dep.ajr+hancrest-all.jar 这两种导入方法虽然尽量避免了导入重复的包,但使用时还是遇到了冲突。查看包中各类和文档后...

    Year_junit4_poetqqj_

    标题中的"Year_junit4_poetqqj_"可能是指一个关于使用JUnit 4.0进行年度测试的项目或教程,而"poetqqj"可能是个人名称、项目代号或者是某种编码规则的一部分,但在这里没有具体含义。描述中的“测试模块使用Junit ...

    junit-volkswagen,检测JUnit测试何时在CI服务器中运行,并使其通过。.zip

    总结起来,`junit-volkswagen`是一个为了解决特定环境下的测试问题而诞生的开源项目,它帮助开发者在CI环境中保持构建的顺利进行,但同时也提醒我们,对于任何测试失败,我们都应深入分析并彻底解决问题,以保证软件...

    junit5,下一代JUnit。.zip

    总的来说,JUnit5是一个强大的测试框架,它不仅保留了JUnit4的优点,还引入了许多新特性,提高了测试的灵活性和可维护性。作为开源项目,JUnit5持续接受社区的贡献,以满足不断发展的Java生态系统的需求。开发者可以...

    软体测试架构junit

    JUnit 是一个广泛使用的软件测试框架,由Erich Gamma和Kent Beck开发,主要用于Java语言的单元测试。作为开源项目,JUnit在SourceForge上托管,并且支持多种编程语言,包括Smalltalk、C++、Perl和Python等。此外,...

    下载junit-4.10 测试包

    JUnit是一个广泛使用的Java编程语言的单元测试框架,由Ernst Konrad和Kent Beck开发。在Java开发者中,它被视为进行单元测试的标准工具。JUnit 4.10是该框架的一个重要版本,引入了许多改进和新特性,使得测试工作...

    junit4.11.chm

    junit4.11.chm 刚打开文档的是时候显示的是struts2-2.2.1 但是这个文档是用junit4.11的源文件生成的,包含junit的API。 下载完后请请注意不要盲目删除。

    netbeans junit 源码

    JUnit是Java编程语言中一个流行的单元测试框架,它使得开发者能够轻松地为他们的代码编写自动化测试。在"NetBeans junit 源码"中,我们可以看到NetBeans如何集成JUnit来帮助程序员自动生成测试代码,这对于提高开发...

    解决java junit单元测试@Test报错的问题

    4. **清理并重新构建项目**:有时候,IDE的缓存可能导致问题持续存在。执行清理和重新构建操作,确保所有的更改都被正确地应用。 5. **检查其他依赖冲突**:如果项目中还有其他测试框架或者库,可能会与JUnit产生...

    junitSample:Junit 方法的例子

    在Java编程领域,JUnit是一个广泛使用的单元测试框架,它使得开发者能够轻松地为代码编写测试用例,确保软件的功能正确性。"junitSample"项目是针对JUnit的一个实例,提供了如何使用JUnit进行方法测试的示范。这个...

    android-junit-report-dev

    1、 在应用tests目录文件下新建一个libs文件夹,将android-junit-report-dev.jar拷贝到该libs文件夹中 2、 在应用tests目录中的Android.mk文件加上如下配置: LOCAL_STATIC_JAVA_LIBRARIES += android-junit-report...

Global site tag (gtag.js) - Google Analytics