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

如何一起使用JUnit和Hamcrest?

公羊晟
2023-03-14
问题内容

我不明白JUnit
4.8如何与Hamcrest匹配器一起工作。有内部定义了一些匹配器junit-4.8.jarorg.hamcrest.CoreMatchers。同时,也有一些
其他 的匹配器hamcrest- all-1.1.jarorg.hamcrest.Matchers。那么,去哪儿呢?我是否应该在项目中明确包含hamcrest
JAR并忽略JUnit提供的匹配器?

特别是,我对empty()匹配器感兴趣,并且在任何这些jar中都找不到。我还需要其他东西吗?:)

还有一个哲学问题:为什么JUnit将org.hamcrest包包含在自己的发行版中而不是鼓励我们使用原始的hamcrest库?


问题答案:

junit提供了新的名为assertThat()的检查断言方法,该方法使用Matchers并应提供更具可读性的测试代码和更好的故障消息。

要使用此功能,junit中包含一些核心匹配器。您可以从这些开始进行基本测试。

如果要使用更多的匹配器,则可以自己编写或使用hamcrest lib。

下面的示例演示如何在ArrayList上使用空匹配器:

package com.test;

import static org.hamcrest.Matchers.empty;
import static org.hamcrest.Matchers.is;
import static org.junit.Assert.assertThat;

import java.util.ArrayList;
import java.util.List;

import org.junit.Test;

public class EmptyTest {
    @Test
    public void testIsEmpty() {
        List myList = new ArrayList();
        assertThat(myList, is(empty()));

    }
}

(我在构建路径中包含了hamcrest-all.jar)



 类似资料:
  • 我尝试使用和通过Postman发送JSON和多个文件,但它不起作用。有可能在API中同时使用这两个注释吗?

  • 当用户单击LoginFragment上的一个按钮时,我将打开另一个名为forgetpassword的片段。这是一个webview,url正在从远程服务器加载。而html中的文本字段是通过软键盘隐藏的。所以我尝试使用adjustResize,它工作得很好。但是loginfragment中的editText小部件被键盘隐藏了。 如何在我的活动中实现两个标志。请帮帮我。

  • 问题内容: 我有一个使用自动装配的3个不同类的A类 在测试它们时,我只希望将其中两个类(B&C)作为模拟,并让D类在正常运行时可以自动装配,但此代码对我不起作用: 甚至有可能这样做吗? 问题答案: 应该是这样的 如果您不想成为别人,则无需在课堂上做任何事情。您 应具有的正确实例。此外,我认为你需要使用的工作,用正确的设定。因为您没有使用,所以需要使用 MockitoAnnotations.init

  • 问题内容: 我正在尝试使SystemJS与Typescript一起使用,但是它们似乎彼此冲突。 我如何利用System.js的自动加载功能而不会与Typescript上的关键字发生冲突?使用import / require可以使Typescript使用它自己的方式来加载和引用文件,尽管它转换为,但对于 是否有可能完全做到这一点,否则我将不得不等待Typescript支持ES6关键字? 问题答案:

  • 我试图在Intellij13中使用一个Gradle项目,但我经常遇到这样的问题: null null 下面是我在运行“Gradle clean build”时得到的一个构建错误: 如果我把所有东西都变成Java,那么我就不会得到任何编译或执行错误。

  • 我对Android有点陌生,几个小时以来一直在努力研究如何将Hamcrest matchers包括在我的测试项目中。代码看起来应该在Eclipse中运行,没有指示的错误。但是当我运行测试时,Hamcrest类没有加载。我得到“NoClassDefFoundError:org.hamcrest.Matchers”。 在过去的3个小时里,我一直在浏览论坛,发现有人以前遇到过这种情况,但运气不好。我一定