问题标签 [google-truth]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
5 回答
5855 浏览

android - Android Studio:无法解析符号“Truth”(Truth 库)

遇到这个要点后:https ://gist.github.com/chemouna/00b10369eb1d5b00401b ,我注意到它正在使用Google Truth库:https ://google.github.io/truth/ 。因此,我首先按照以下过程build.gradle在 Android Studio 中的文件中添加库:

但是当我想为我的断言 java 类添加 Truth 入口点的静态导入时:

我收到符号Truth无法解析的错误。我尝试重建我的项目并实施此处所述的解决方案:AndroidTestCompile dependencies not recognize in the imports,主要运行以下 gradle 任务:

  • ./gradlew 应用程序:依赖项
  • 组装AndroidTest

但问题仍然存在。

有什么帮助吗?

我真的应该在我的 build.gradle 文件中添加这些行吗?:

如果我已经有了这些:

0 投票
1 回答
217 浏览

testing - 如何在 PCollection 的 PAssert 中使用自定义比较器/差异

我有一个类似于下面的代码来转换协议缓冲区消息的 PCollections。因为其中一些非常大,所以我不仅想测试它是否相等,还想打印出差异在哪里。

我想使用提供打印差异的https://google.github.io/truth/fuzzy测试。

问题是:

  1. 如何在 PAssert 中使用自定义差异/比较功能?
  2. 如何从 PCollection 转换为 List?
0 投票
1 回答
371 浏览

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

我是 Google Truth 库的新手,我想知道是否有一种方法可以仅使用其中一个属性来比较两个元素。我知道 AssertJ 可以做到这一点,所以我想知道 Truth 是否可以做到这一点。

我想做类似的事情。

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

//其他代码

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

0 投票
4 回答
4287 浏览

android - Android X + Truth + Guava 测试编译问题

api作为一个更大项目的一部分,我有一个 Android 库(称为)gradle 模块。我刚刚将整个项目迁移到 AndroidX。现在在apilib 上运行仪器测试时出现此错误:

如果我检查debugAndroidTest变体的运行时类路径:

我得到这个输出。我可以看到问题:

AndroidX 核心依赖于新的“仅 ListableFuture”构建的番石榴,而真相依赖于完整的番石榴 25。

我想我理解 ListenableFuture 的根本问题:https ://groups.google.com/forum/#!topic/guava-announce/Km82fZG68Sw

什么是正确的解决方案?

我不想完全将 Guava 从 Truth 中排除(否则 Truth 将无法编译)

我可以通过使其成为一级依赖项来排除 + 强制更新 Guava 27:

如果我这样做,我应该使用 android 或 JRE 版本的番石榴吗?

附带问题:

为什么在查看类路径时看不到番石榴依赖compile项?该错误是编译时错误,而不是运行时错误

产生的部门:


更新:

更新到 Truth 0.43 后,我现在看到此错误:

如果我理解正确:

  • 真理 0.43 取决于番石榴 27
  • Guava 27 依赖,9999.0-empty因为它内部包含一个副本,ListenableFuture并且版本 9999.0-empty 是“空的”。
  • AndroidX 核心等其他库依赖于listenablefuture:1.0
  • 解决冲突时(我应该使用版本 1.0 还是 9999.0?)Gradle 将选择最新版本,在本例中为 9999.0。
  • 所以 AndroidX 核心实际上是通过 Guava 从类路径获取ListenableFuture的,但这并不明智。
  • 但是,strictly关键字强制使用 1.0
  • 发生这种情况是因为 Android Gradle 插件强制运行时和编译时类路径依赖于相同的版本 =(在此处阅读更多

所以目前我不知道现在该做什么。

0 投票
3 回答
1999 浏览

google-truth - Android Studio - 未解决的参考:真相

我正在尝试在我的项目中包含 Google Truth 框架进行测试。我遵循了有关如何获取项目设置的文档。

这是来自我的应用程序的 build.gradle 文件:

同步过程成功完成。

然后我尝试运行本地单元测试,例如:

我收到 Kotlin 编译器错误:未解决的参考:真相

有几点需要注意:

  • 当我尝试通过刚开始键入来使用与 Truth 相关的方法时,对于这些方法中的任何一个都没有任何建议。这无需手动添加导入语句,但是当我从建议的方法中选择合适的方法时,Android Studio 总是自动完成,所以这是我注意到的第一件奇怪的事情。
  • 当上面提到的不起作用时,我手动进行了导入,当我输入要导入的内容时,我确实得到了 com.google.common.truth.Truth 的建议......这表明至少 jar 文件在某个地方被发现。手动导入后,Android Studio 开始按照我之前的预期从 Truth 建议方法。

因此,在完成上述步骤后,我尝试运行测试,但仍然遇到未解决的问题。

任何人都可以尝试对此有所了解吗?有没有人遇到过这种情况。我将非常感谢任何形式的帮助!

0 投票
2 回答
538 浏览

java - 如何覆盖 google.Truth 中测试的默认失败消息?

我正在编写一个断言文档不包含特定字符串的测试。当测试失败时,它会在表单中打印“实际”值

文件很长。最好不要打印它而只打印文档的名称。我试过 assertWithMessage() 但它只添加一条消息,而不是替换默认消息。

0 投票
1 回答
218 浏览

google-truth - 如何用谷歌真相否定断言

如果是有序的,则可以测试整数列表:

但是如何测试它没有被订购呢?

有没有办法写:

或者更一般地说,有没有办法以方便的方式用真理否定断言?

0 投票
1 回答
657 浏览

java - 如何修复测试依赖项中的拆分包?

我创建了一个示例项目来解释我遇到的问题。我有使用两个具有拆分包的依赖项 jar 的测试。在这种情况下,google-truth 具有拆分包。

构建.gradle

src/main/java/module-info.java

src/test/java/module-info.test

src/test/java/example/truthtest/ATest.java

当我运行构建时,我收到以下错误。

我认为问题在于truth两者truth.java8.extension都包含同一个包中的类com.google.truth。如果我删除truth-java8-extensions测试编译,但这是我实际项目中必需的依赖项。如何让这两个模块在使用 java 模块系统的测试中协同工作?

当我调试 gradle 时,这些是失败的编译器选项(路径被截断)。

0 投票
1 回答
584 浏览

android - androidTestImplementation Google Truth 1.0 和实现 Google Guava 27.0.1 无法满足的版本约束

简而言之

我无法使用以下添加的依赖项构建最小的新Android Studio项目:

如何重现

我就是这样做的,但当然还有其他方法。

  1. Android Studio 3.5.2中:
    1. 文件新建新建项目...
  2. 创建新项目对话框中:
    1. 手机和平板电脑选项卡 →不添加活动下一步
    2. 名称包名保存位置随便你
    3. 语言Java
    4. 最低 API 级别API 28
    5. 该项目将支持即时应用程序已禁用
    6. 结束
  3. ./app/build.gradle
    1. 添加implementation 'com.google.guava:guava:27.0.1-android'androidTestImplementation "com.google.truth:truth:1.0"dependencies
  4. ExampleInstrumentedTest.java 中
    1. 右键单击class ExampleInstrumentedTest并选择运行'ExampleInstrumentedTest'

预期
测试通过

实际
构建错误:

如何解决此构建问题?

0 投票
1 回答
241 浏览

unit-testing - 如何检查 Google Truth 断言中的字符串相等性?

Truth.assertThat(actual).matches(expected)还是Truth.assertThat(actual).isEqualTo(expected)

文档说matches()方法以正则表达式的形式接收一个字符串,但不确定字符串文字是否也有效?这就是让我感到困惑的原因。