Java hamcrest core,为什么需要这个?
我在Java中使用JUnit进行TDD,注意到有两个组件可以从JUnit.org下载。首先,我认为我需要JUnit组件并下载、安装。当我编译并试图运行我的测试时,它抱怨没有找到Hamcrest类。所以我不得不从他们的主页上再次下载这个 那么,出于好奇,为什么我们从一开始就需要两次下载才能达到一个目的呢?有人知道为什么hamcrest内核与JUnit是分开的,即使它被JUnit使用 谢谢,Java hamcrest core,为什么需要这个?,java,junit,hamcrest,Java,Junit,Hamcrest,我在Java中使用JUnit进行TDD,注意到有两个组件可以从JUnit.org下载。首先,我认为我需要JUnit组件并下载、安装。当我编译并试图运行我的测试时,它抱怨没有找到Hamcrest类。所以我不得不从他们的主页上再次下载这个 那么,出于好奇,为什么我们从一开始就需要两次下载才能达到一个目的呢?有人知道为什么hamcrest内核与JUnit是分开的,即使它被JUnit使用 谢谢, Javabug使用Hamcrest。在过去,JUnit嵌入了导致问题的Hamcrest类,因为项目在不同的周
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添加到类路径中。我真的不确定你手动下载的是什么!这很好地解决了我最初的问题。谢谢,@次优!非常感谢您提供的额外信息。尽管我期待着另一个答案,但这是非常有用的。。但我投票赞成这个答案!