Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java hamcrest core,为什么需要这个?_Java_Junit_Hamcrest - Fatal编程技术网

Java hamcrest core,为什么需要这个?

Java hamcrest core,为什么需要这个?,java,junit,hamcrest,Java,Junit,Hamcrest,我在Java中使用JUnit进行TDD,注意到有两个组件可以从JUnit.org下载。首先,我认为我需要JUnit组件并下载、安装。当我编译并试图运行我的测试时,它抱怨没有找到Hamcrest类。所以我不得不从他们的主页上再次下载这个 那么,出于好奇,为什么我们从一开始就需要两次下载才能达到一个目的呢?有人知道为什么hamcrest内核与JUnit是分开的,即使它被JUnit使用 谢谢, Javabug使用Hamcrest。在过去,JUnit嵌入了导致问题的Hamcrest类,因为项目在不同的周

我在Java中使用JUnit进行TDD,注意到有两个组件可以从JUnit.org下载。首先,我认为我需要JUnit组件并下载、安装。当我编译并试图运行我的测试时,它抱怨没有找到Hamcrest类。所以我不得不从他们的主页上再次下载这个

那么,出于好奇,为什么我们从一开始就需要两次下载才能达到一个目的呢?有人知道为什么hamcrest内核与JUnit是分开的,即使它被JUnit使用

谢谢,
Javabug使用Hamcrest。在过去,JUnit嵌入了导致问题的Hamcrest类,因为项目在不同的周期中发展。在最近的JUnit版本中(如果我没记错的话,从4.11开始),这一点已经改变,Hamcrest没有嵌入。因此,如果您将JUnit作为依赖项添加到您的项目(Maven、Gradle等),您将隐式地获得对Hamcrest的依赖项


我相信Hamcrest上的这个问题在某种程度上与分裂有关

实际上,您希望尽可能多地使用“hamcrest”的内容

看看,它大量使用了hamcrest matcher类


严肃地说:我现在只在我的测试中使用了资产;我从不后悔这样做,也从不后悔放弃所有其他断言。

org.junit.Assert
依赖于Hamcrest核心库。由于它是静态方法签名的一部分,因此它必须位于类路径上

如果您不想使用它,那么对
hamcrest-core
的测试运行时依赖项应该可以工作,如果您想使用它,我建议对
hamcrest-library
的测试编译依赖项(使用maven而不是gradle,这都是范围测试)


不存在更灵活升级的临时依赖关系。顺便说一句,它也有一个Hamcrest依赖项。了解更多信息。

在Eclipse或Intellij中,您可以将junit添加到类路径中。我真的不确定你手动下载的是什么!这很好地解决了我最初的问题。谢谢,@次优!非常感谢您提供的额外信息。尽管我期待着另一个答案,但这是非常有用的。。但我投票赞成这个答案!