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)) ; }
}
}
分享到:
相关推荐
描述中提到,这个包包括了两个重要的JAR文件,一个是JUnit的核心库,另一个则是可能的JUnit的依赖项,因为有时候仅仅导入JUnit的核心库并不足以让测试正常运行,还需要额外的依赖。 首先,我们来详细了解一下JUnit ...
- **JUnit Vintage**:这是一个向后兼容的模块,允许在JUnit5环境下运行JUnit3和JUnit4编写的测试用例。 **1.2 支持的Java版本** JUnit5支持多个Java版本,包括Java 8及以上版本。这意味着开发人员可以根据项目的...
总结来说,JUnit4结合Java的反射机制可以让我们在必要的时候测试类的私有成员,确保代码的完整性和正确性。但在实际应用中,应谨慎使用反射,因为它可能会引入额外的复杂性和潜在的安全风险。优先考虑重构代码,使...
在Java编程领域,JUnit是一个广泛使用的单元测试框架,它使得开发者能够轻松地为自己的代码编写自动化测试用例。本资源“Junit入门练习代码”旨在帮助初学者掌握JUnit的基本概念和使用方法,通过实践来加深理解。...
总结起来,JUnit4 是一个强大的单元测试框架,它的核心在于利用 Java 5 的注解特性简化了测试代码的编写。通过注解,我们可以更方便地定义测试前的准备、测试后的清理、以及期望的测试行为。JUnit4 提供的多种注解使...
使用是导入包的方案:junit.jar + hamcrest-core.jar + hamcrest-library.jar 或者是:junit-dep.ajr+hancrest-all.jar 这两种导入方法虽然尽量避免了导入重复的包,但使用时还是遇到了冲突。查看包中各类和文档后...
标题中的"Year_junit4_poetqqj_"可能是指一个关于使用JUnit 4.0进行年度测试的项目或教程,而"poetqqj"可能是个人名称、项目代号或者是某种编码规则的一部分,但在这里没有具体含义。描述中的“测试模块使用Junit ...
总结起来,`junit-volkswagen`是一个为了解决特定环境下的测试问题而诞生的开源项目,它帮助开发者在CI环境中保持构建的顺利进行,但同时也提醒我们,对于任何测试失败,我们都应深入分析并彻底解决问题,以保证软件...
总的来说,JUnit5是一个强大的测试框架,它不仅保留了JUnit4的优点,还引入了许多新特性,提高了测试的灵活性和可维护性。作为开源项目,JUnit5持续接受社区的贡献,以满足不断发展的Java生态系统的需求。开发者可以...
JUnit 是一个广泛使用的软件测试框架,由Erich Gamma和Kent Beck开发,主要用于Java语言的单元测试。作为开源项目,JUnit在SourceForge上托管,并且支持多种编程语言,包括Smalltalk、C++、Perl和Python等。此外,...
JUnit是一个广泛使用的Java编程语言的单元测试框架,由Ernst Konrad和Kent Beck开发。在Java开发者中,它被视为进行单元测试的标准工具。JUnit 4.10是该框架的一个重要版本,引入了许多改进和新特性,使得测试工作...
junit4.11.chm 刚打开文档的是时候显示的是struts2-2.2.1 但是这个文档是用junit4.11的源文件生成的,包含junit的API。 下载完后请请注意不要盲目删除。
JUnit是Java编程语言中一个流行的单元测试框架,它使得开发者能够轻松地为他们的代码编写自动化测试。在"NetBeans junit 源码"中,我们可以看到NetBeans如何集成JUnit来帮助程序员自动生成测试代码,这对于提高开发...
4. **清理并重新构建项目**:有时候,IDE的缓存可能导致问题持续存在。执行清理和重新构建操作,确保所有的更改都被正确地应用。 5. **检查其他依赖冲突**:如果项目中还有其他测试框架或者库,可能会与JUnit产生...
在Java编程领域,JUnit是一个广泛使用的单元测试框架,它使得开发者能够轻松地为代码编写测试用例,确保软件的功能正确性。"junitSample"项目是针对JUnit的一个实例,提供了如何使用JUnit进行方法测试的示范。这个...
1、 在应用tests目录文件下新建一个libs文件夹,将android-junit-report-dev.jar拷贝到该libs文件夹中 2、 在应用tests目录中的Android.mk文件加上如下配置: LOCAL_STATIC_JAVA_LIBRARIES += android-junit-report...