当前位置: 首页 > 面试题库 >

hamcrest测试总是失败

益清野
2023-03-14
问题内容

我正在使用hamcrest
1.3测试我的代码。这简直是​​死。我试图对其进行测试,以确保生成的数字小于13。我有一条打印语句,其中打印了生成的数字。生成的数字始终小于13,但测试始终失败。我做错什么了吗?

这是我正在测试的代码。

import java.util.Random;

public class Die {
    private int numSides;
    Random rand;

    public Die(int numSides){
        this.numSides = numSides;
        rand = new Random(System.currentTimeMillis());
    }

    public int roll(){
        return rand.nextInt(numSides) + 1;
    }
}

这是我的测试代码。

import static org.hamcrest.Matchers.*;
import static org.hamcrest.MatcherAssert.assertThat;

import org.junit.Test;

public class DieTest {
    @Test
    public void testRoll() {
        Die x = new Die(12);    
        assertThat(x.roll(), is(lessThan(13)));
    }
}

编辑:这是故障堆栈跟踪。

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(Unknown Source)
at java.lang.ClassLoader.preDefineClass(Unknown Source)
at java.lang.ClassLoader.defineClassCond(Unknown Source)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.security.SecureClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.access$000(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at DieTest.testRoll(DieTest.java:12)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:76)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)
at org.junit.runners.ParentRunner.run(ParentRunner.java:236)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:49)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)

问题答案:

这是帮助我解决问题的站点。

http://code.google.com/p/hamcrest/issues/detail?id=128

hamcrest.jar需要在构建路径中的Junit库之前进行。



 类似资料:
  • 我的测试运行良好,但随后我不得不重新安装Eclipse。现在,即使是最简单的测试也会失败,出现以下错误: java.lang.NoClassDeffounderRror:org/hamcrest/selfdescription 在回答类似的问题时,我试着遵循这些建议,但我无法解决这个错误。我已经将Junit库添加到项目中,尝试将junit-4.11.jar和junit-4.10.jar添加到类路径

  • 问题内容: 我正在尝试进行布尔测试,以便如果其中一个胎压低于35或超过45,则系统会输出“不良充气”。 在我的课堂上,我必须使用布尔值,这是我尝试过的。但是,返回的布尔值始终为true。我不明白为什么。 问题答案: 更改为: 甚至更好: 布尔比较运算符为和。该是赋值运算符。 另外,在检查是否违反条件之前,需要进行初始设置。

  • 问题内容: 我尝试调用-method,但是它总是失败。我的变量始终是。我在这里查看了一些类似的帖子,但没有一个完全适合我的需求。这是我的代码: 这是我尝试解决的方法: 我尝试使用该方法 并且 但是没有任何效果。一直都是。我还尝试给它一个文字字符串作为路径,设置为,甚至更改了我想将其设置为777的目录权限,但注意了。永远是错误的。希望您能为您提供帮助。任何帮助都非常感谢。谢谢 问题答案: 这是一个问

  • 我已经为Jenkins项目的集成公司建立了一个PoC,当Git存储库中有一个检查时,该PoC将构建并执行测试。当测试完成后,Jenkins将更新在Xray for JIRA中管理的测试。 测试是用cucumber写的。我曾徒劳地试图导致一个单一的测试产生一个失败,只是为了能够将它添加到我将要给高层管理人员的演示中。 以下是我的文件helloworld.feature的内容: 我知道不知道小cucu

  • 问题内容: 我正在使用 Junit 通过 Seleniun WebDriver 运行测试。我试图将测试分成功能区域,以更好地报告错误。我创建了测试以测试页面加载/将文档移动到其他工作流程。如果页面加载测试失败,或者工作流移动失败,我想跳过后续的页面/工作流测试。 如果测试A失败,如何跳过班级中的其余测试或在班级B中运行测试? 注意: 我意识到我要问的是“ UNIT TESTS的 不良实践* 。但是