java - 如何使用 Google Truth(单元测试)使用两个元素的属性之一来比较两个元素

标签 java unit-testing google-truth

我是 Google Truth 库的新手,我想知道是否有一种方法可以仅使用两个元素的一个属性来比较它们。我知道用 AssertJ 可以做到这一点,所以我想知道用 Truth 是否可以实现同样的效果。

我想做类似的事情。

列表list1 = Method1TocreateAList();
列表 list2 = Method2ToCreateAList();

//其他代码

//我想要实现的测试
assertThat(list2).compareElementsByUsing(x=>x.id = y)

最佳答案

要基于除简单相等之外的比较来比较列表,请使用 comparingElementsUsing :

assertThat(list1).comparingElementsUsing(...).containsExactlyElementsIn(list2);

如果您也想检查订单,请在末尾添加 inOrder() 调用。

剩下的唯一技巧是在 ... 部分中放置什么内容。对于您的情况,由于您想比较单个字段的值,因此可以使用 Correspondence.transforming :

assertThat(list1)
    .comparingElementsUsing(
        transforming(X::id, "has an ID of"))
    .containsExactlyElementsIn(list2);

关于java - 如何使用 Google Truth(单元测试)使用两个元素的属性之一来比较两个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52425884/

相关文章:

c# - 存储库中的 Moq 函数,以 lambda 表达式作为参数

unit-testing - 如何为每个 C# TestMethod 单元测试自动创建 TFS 测试用例

java - 我如何断言一个List恰好包含一个特定类的一个实例?

Java 字符串到整数不起作用?

使用 log4j 将 java 游戏室记录到单独的日志文件是个好主意吗?

c# - 无法加载文件或程序集 'Microsoft.VisualStudio.TestPlatform.ObjectModel, Version=11.0.0.0'

安卓工作室 : Cannot resolve symbol "Truth" (Truth library)

java - 如何使用 google-truth 测试是否抛出了预期的异常?

JAVA REST jersy + Eclipse + MYSQL 插入数据到数据库

java - 非常不寻常的舍入