关于hamcrest的问题解决

之前项目中用到一个Hamcrest ,为了扩展junit的测试功能,使用了该包

http://hamcrest.org/JavaHamcrest/

此包 功能还是比较多的。


总结如下"

1)与 assertThat 配合使用

2)instanceOf, isCompatibleType --测试类型的

3)notNullValue,nullValue             --测试null值

4)sameInstance                             --测试对象实例

5)Beans ->hasProperty               -- 测试JaveBean属性

6)可以测集合类

7)可以测数字

   closeTo- 测浮点数接近给定值

    greaterThan,lessThan,

8)可以测文本

containsString, startsWith, endsWith 测试字符串匹配

package test.junitdemo.util;

import org.junit.After;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;


import static org.hamcrest.Matchers.*;

import junit.framework.TestCase;;

public class TestCalcuate {
	Calcuate cal;
	
	@Before
	public void setUp(){
		cal = new Calcuate();
	}
	
	
	@Test(timeout = 30)
	public void testAdd(){
//		try {
//			Thread.sleep(500);
//		} catch (InterruptedException e) {
//			// TODO Auto-generated catch block
//			e.printStackTrace();
//		}
		int rel = cal.add(20, 10);
		TestCase.assertEquals("加法有问题",rel, 30);
	}
	
	@Test(timeout = 30)
	public void testMinus(){
		int rel = cal.minus(20, 10);
		TestCase.assertEquals("减法法有问题",rel, 10);
	}
	
	@Test(timeout = 30)
	public void testMul(){
		int rel = cal.mul(20, 10);
		TestCase.assertEquals("乘法法有问题",rel, 200);
	}
	
	@Test
	public void testDivide(){
		int rel;
		cal.divide(20, 0);
		rel= cal.divide(20, 10);
		TestCase.assertEquals("除法有问题",rel, 2);
	}
	
	@Test
	public void testHamcrest(){
		//try {
			Assert.assertThat(50,allOf(greaterThan(20),lessThan(60)));
		//} catch (Exception e) {
			// TODO Auto-generated catch block
		//	e.printStackTrace();
		//}
	}
	
	@After
	public void tearDown(){
		cal = null;
	}
}




在写的过程中遇到一个问题,JUnit总是run不过去,后来几经努力,发现原来是 引用顺序的问题


java.lang.SecurityException: class "org.hamcrest.Matchers"'s signer information does not match signer information of other classes in the same package
at java.lang.ClassLoader.checkCerts(ClassLoader.java:898)
at java.lang.ClassLoader.preDefineClass(ClassLoader.java:668)
at java.lang.ClassLoader.defineClass(ClassLoader.java:761)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:467)
at java.net.URLClassLoader.access$100(URLClassLoader.java:73)


Junit的引用必须放在hamcrest.jar之后

调整顺序后,再次执行





  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
您遇到的问题是"Cannot resolve symbol 'hamcrest'"。这个问题的原因可能是您的项目中没有正确导入或配置hamcrest库。解决这个问题的方法是确保您的项目正确导入了hamcrest库,并且在您的代码中正确引用了该库。 您可以按照以下步骤来解决这个问题: 1. 确保您的项目中已经添加了hamcrest库的依赖。您可以在项目的构建文件(如pom.xml、build.gradle)中添加hamcrest库的依赖项。例如,在Maven项目中,您可以在pom.xml文件中添加以下依赖项: ```xml <dependency> <groupId>org.hamcrest</groupId> <artifactId>hamcrest</artifactId> <version>2.2</version> <scope>test</scope> </dependency> ``` 如果您使用的是Gradle,请在build.gradle文件中添加以下依赖项: ```gradle testImplementation 'org.hamcrest:hamcrest:2.2' ``` 2. 在您的代码中正确引用hamcrest库。确保您在使用hamcrest相关的类或方法时,使用了正确的导入语句。例如,在使用hamcrest的匹配器时,您可以添加以下导入语句: ```java import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.*; ``` 3. 如果您已经添加了正确的依赖项和导入语句,但仍然遇到该问题,请尝试重新构建项目或重新导入依赖项。 如果按照上述步骤仍然无法解决问题,请检查您的开发环境是否正确配置,并确保您的hamcrest库是可用和完整的。 希望以上解决方法可以帮助到您。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值