import com.google.common.collect.Lists; import org.apache.commons.lang.ArrayUtils; import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.math.RandomUtils; import java.util.Arrays; import java.util.List; /** * Created by Administrator on 2015/3/29. */ public class RandomDigits { public static final int DigitLength = 4; public String generate() { List<String> numbers = Lists.newArrayList(); int index = DigitLength; while (index > 0) { String number = String.valueOf(RandomUtils.nextInt(10)); if (!numbers.contains(number)) { numbers.add(String.valueOf(number)); index--; } } return StringUtils.join(numbers, ""); } }
import org.apache.commons.lang.StringUtils; import org.junit.Test; import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.core.Is.is; /** * Created by Administrator on 2015/3/29. */ public class RandomDigitsTest { @Test public void should_return_four_digits_when_generate() throws Exception { RandomDigits randomDigits = new RandomDigits(); assertThat(randomDigits.generate(), is(NumberMatcher.matcher())); } @Test public void should_return_four_different_digits_when_generate() throws Exception { RandomDigits randomDigits = new RandomDigits(); assertThat(randomDigits.generate(), is(DifferentNumberMatch.matcher())); } @Test public void should_return_random_digits_when_generate() throws Exception { RandomDigits randomDigits = new RandomDigits(); String firstRandomDigits = randomDigits.generate(); String secondRandomDigits = randomDigits.generate(); assertThat(StringUtils.equals(firstRandomDigits,secondRandomDigits), is(false)); } }
import org.hamcrest.BaseMatcher; import org.hamcrest.Description; import org.hamcrest.Matcher; import java.util.regex.Pattern; /** * Created by Administrator on 2015/3/29. */ public class NumberMatcher extends BaseMatcher<String> { public String number; public static Matcher<String> matcher() { return new NumberMatcher(); } @Override public boolean matches(Object number) { this.number = (String) number; Pattern pattern = Pattern.compile("^\\d{4}$"); return pattern.matcher(this.number).find(); } @Override public void describeTo(Description description) { description.appendText(number + " not match '^\\d{4}$'"); } }
import com.google.common.collect.Lists; import com.google.common.collect.Sets; import org.hamcrest.BaseMatcher; import org.hamcrest.Description; /** * Created by Administrator on 2015/3/29. */ public class DifferentNumberMatch extends BaseMatcher<String> { private String number; public static BaseMatcher<String> matcher() { return new DifferentNumberMatch(); } @Override public boolean matches(Object o) { number = (String) o.toString(); return Sets.newHashSet(Lists.charactersOf(number)).size() == number.length(); } @Override public void describeTo(Description description) { description.appendText(this.number + " has same digit."); } }
相关推荐
自定义 Hamcrest 匹配器的集合 Android 的 TableLayout 匹配器包括: 查看具有指定视图的行下方的 N 行 视图是具有指定子索引的视图组的成员 与指定视图在同一行的视图 指定行和列交叉点处的视图 安卓版 ...
3. 自定义匹配器:除了预定义的匹配器外,开发者还可以自定义匹配器以满足特定需求。这可以通过实现`Matcher`接口或使用`CoreMatchers`提供的`matchesPredicate()`方法来完成。 4. 嵌套匹配:Hamcrest支持嵌套匹配...
通过使用Hamcrest,我们可以创建自定义的匹配器,这些匹配器可以表达复杂的条件,使测试更具表达力。 Hamcrest的核心概念是Matcher。Matcher是一个接口,定义了两个方法:matches()用于检查输入是否符合预期,...
此外,`hamcrest-library`还包含了`DescribedAs`,这个工具类允许你为匹配器添加自定义的描述,使得测试失败时的错误信息更加友好和易懂。 在实际项目中,当你在JUnit测试中引入这两个jar包后,你的测试代码将能够...
《hamcrest-core-1.3.ORC2.jar:hamcrest核心包详解》 hamcrest-core-1.3.ORC2.jar是Java编程中一个至关重要的组件,它属于hamcrest框架的核心部分。hamcrest是一个用于匹配对象和表达式,进行断言的库,尤其在单元...
这是Hamcrest 1.3的主库文件,包含了所有必要的类和资源,用于在项目中引入和使用Hamcrest框架。将这个JAR文件添加到项目的类路径中,就可以开始编写基于Hamcrest的测试代码了。 5. **在单元测试中的应用** - **...
4. **自定义匹配器**:除了内置的匹配器,Hamcrest还鼓励开发者根据需求创建自定义的匹配器。通过扩展`org.hamcrest.Description`接口,可以提供失败时的描述信息,增强测试的可读性。 5. **与测试框架的集成**:...
《Hamcrest库详解及其在Java测试中的应用》 Hamcrest是一个强大的匹配框架,它为Java开发者提供了一套灵活且易于使用的断言库。这个名为"hamcrest-library.rar"的压缩包,包含了hamcrest的核心库——hamcrest-...
《Hamcrest库在Java单元测试中的重要角色》 在Java编程世界中,单元测试是确保代码质量的关键环节。为了有效地进行单元测试,开发者通常需要依赖一些专门的测试框架和库,其中Hamcrest就是一个不可忽视的角色。本文...
例如,`@Test(expected = IllegalArgumentException.class)`可以检查方法是否抛出了预期的异常,而`@Rule`可以用来定义自定义的测试规则,如断言日志记录或资源清理。 总的来说,hamcrest库是Java单元测试领域的一...
赠送jar包:hamcrest-core-1.3.jar; 赠送原API文档:hamcrest-core-1.3-javadoc.jar; 赠送源代码:hamcrest-core-1.3-sources.jar; 包含翻译后的API文档:hamcrest-core-1.3-javadoc-API文档-中文(简体)版.zip...
使用Hamcrest进行单元测试时,开发者可以创建自定义的匹配器,也可以使用预定义的匹配器如`CoreMatchers.is()`、`Matchers.endsWith()`等来检查对象的属性、方法或返回值是否符合预期。例如,你可以在JUnit的测试...
标题“hamcrest两个jar包”指的是Hamcrest库中的两个核心组件,即`core.jar`和`library.jar`。这两个JAR文件是Hamcrest框架的基础,它们提供了丰富的匹配器(Matcher)类和API,帮助开发者编写更清晰、更具表达力的...
Hamcrest是一个强大的Java匹配框架,它为编写自定义断言提供了便利,使测试代码更加清晰和富有表达力。hamcrest-library-1.3.jar是Hamcrest库的一个版本,此版本专注于提供丰富的匹配器类,帮助开发者构建高度定制的...
赠送jar包:hamcrest-library-1.3.jar; 赠送原API文档:hamcrest-library-1.3-javadoc.jar; 赠送源代码:hamcrest-library-1.3-sources.jar; 赠送Maven依赖信息文件:hamcrest-library-1.3.pom; 包含翻译后的API...
支持Junit测试,简单实用,只需要添加即可,hamcrest-library-1.3.jar包是hamcrest的核心包,这个jar包主要用于补充hamcrest core包中的断言,导入后就可以正常开发使用了,主要适用于eclipse中的JUnit4测试操作,...
Junit、hamcrest-core.jar和hamcrest-library.jar这三者是Java编程语言中进行单元测试的关键工具,尤其对于Java开发者来说,它们是不可或缺的。 首先,我们来详细了解一下Junit。Junit是一款开源的测试框架,它是...
《Junit与Hamcrest集成测试框架详解》 在软件开发过程中,单元测试是不可或缺的一环,它能够确保代码的质量和可维护性。Junit作为Java领域最常用的单元测试框架,而Hamcrest则是一款强大的匹配器库,能为测试提供...