当前位置: 首页 > 知识库问答 >
问题:

测试数组是否包含具有JUnit和AssertJ的元素

弓温书
2023-03-14
@Test
public void helloTest() {
    Object[] array = new Object[2];
    String[] firstElement = new String[]{"Hello"};
    String[] secondElement = new String[]{"World"};
    array[0] = firstElement;
    array[1] = secondElement;
    assertThat(array).containsExactlyInAnyOrder(firstElement, secondElement);
}

@Test
public void worldTest() {
    Object[] array = new Object[1];
    String[] element = new String[]{"Hello"};
    array[0] = element;
    assertThat(array).containsExactlyInAnyOrder(element);
}
 java.lang.AssertionError: 
 Expecting:
   <[["Hello"]]>
 to contain exactly in any order:
   <["Hello"]>
 elements not found:
   <["Hello"]>
 and elements not expected:
   <[["Hello"]]>

但为什么?

共有1个答案

通迪
2023-03-14

这是类型的问题。以下测试将通过:

@Test
public void worldTest() {
    String[][] array = new String[1][];
    String[] element = new String[]{"Hello"};
    array[0] = element;
    assertThat(array).containsExactlyInAnyOrder(element);
}

您的WorldTest失败,因为您试图断言object[]类型的对象包含String[]类型的元素。您正在使用具有以下声明的方法进行此断言:

ObjectArrayAssert<ELEMENT> containsExactlyInAnyOrder(ELEMENT... values)

此方法期望传入的类型与正在检查的类型匹配。在我上面的例子中,这是正确的,因此测试通过了。在您的WorldTest版本中,这不是真的,因为一种类型是String[]而另一种类型是Object[]

 类似资料:
  • 问题内容: 在Java中,原始类型和数组是否具有包含包? 可能不是,但是只是想确定一下。 问题答案: 简单答案 让我们测试一下: 输出: 空 null 不,他们不:-) 基本类型 原始类是没有包的特殊构造。供参考,请参阅的来源,别名为: 如您所见,原始类是通过package-private和native机制加载的: 并投射到(我想为了启用自动装箱) 包装器类型及其原始类型 顺便说一句:每个包装器类

  • 我实际上有两种类型的数据: 我想用Hamcrest在我的身体响应中测试我的放心请求后,b(元素接收)是否包含来自a的一个或多个元素(

  • 问题内容: 在我们的项目中,我有几个JUnit测试,例如从目录中获取每个文件并对其进行测试。如果我在中实现了一种方法,那么它只会显示为可能失败或成功的一项测试。但是我对每个文件的结果都很感兴趣。如何编写一个/ 使得每个文件显示为单独的测试,例如在Eclipse的图形TestRunner中?(为每个文件编写显式测试方法不是一种选择。) 问题答案: 看看JUnit 4 中的 参数化测试 。 实际上,我

  • Django提供了一组小工具,在写测试时派上用场。 测试客户端 测试客户端是一个Python类,作为一个虚拟的Web浏览器,允许您测试您的视图,并与您的Django供电的应用程序以编程方式交互。 你可以用测试客户端做的一些事情是: 模拟对URL的GET和POST请求,并观察响应 - 从低级HTTP(结果头和状态代码)到页面内容的一切。 查看重定向链(如果有),并在每个步骤中检查网址和状态代码。 测

  • 如何检查数组中的所有元素是否相同? 这是我想到的唯一解决办法。我想知道有没有有效的?

  • 主要内容:对无序数组的查询,对有序数组的查询在实际开发中,经常需要查询数组中的元素。例如,学校为每位同学分配了一个唯一的编号,现在有一个数组,保存了实验班所有同学的编号信息,如果有家长想知道他的孩子是否进入了实验班,只要提供孩子的编号就可以,如果编号和数组中的某个元素相等,就进入了实验班,否则就没进入。 不幸的是,C语言标准库没有提供与数组查询相关的函数,所以我们只能自己编写代码。 对无序数组的查询 所谓无序数组,就是数组元素的排列没有规律