问题标签 [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.
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 文件中添加这些行吗?:
如果我已经有了这些:
testing - 如何在 PCollection 的 PAssert 中使用自定义比较器/差异
我有一个类似于下面的代码来转换协议缓冲区消息的 PCollections。因为其中一些非常大,所以我不仅想测试它是否相等,还想打印出差异在哪里。
我想使用提供打印差异的https://google.github.io/truth/fuzzy测试。
问题是:
- 如何在 PAssert 中使用自定义差异/比较功能?
- 如何从 PCollection 转换为 List?
java - 如何使用 Google Truth(单元测试)使用其中一个属性来比较两个元素
我是 Google Truth 库的新手,我想知道是否有一种方法可以仅使用其中一个属性来比较两个元素。我知道 AssertJ 可以做到这一点,所以我想知道 Truth 是否可以做到这一点。
我想做类似的事情。
列表 list1 = Method1TocreateAList();
列表 list2 = Method2ToCreateAList();
//其他代码
//我要实现的测试
assertThat(list2).compareElementsByUsing(x=>x.id = y)
android - Android X + Truth + Guava 测试编译问题
api
作为一个更大项目的一部分,我有一个 Android 库(称为)gradle 模块。我刚刚将整个项目迁移到 AndroidX。现在在api
lib 上运行仪器测试时出现此错误:
如果我检查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 插件强制运行时和编译时类路径依赖于相同的版本 =(在此处阅读更多
所以目前我不知道现在该做什么。
google-truth - Android Studio - 未解决的参考:真相
我正在尝试在我的项目中包含 Google Truth 框架进行测试。我遵循了有关如何获取项目设置的文档。
这是来自我的应用程序的 build.gradle 文件:
同步过程成功完成。
然后我尝试运行本地单元测试,例如:
我收到 Kotlin 编译器错误:未解决的参考:真相
有几点需要注意:
- 当我尝试通过刚开始键入来使用与 Truth 相关的方法时,对于这些方法中的任何一个都没有任何建议。这无需手动添加导入语句,但是当我从建议的方法中选择合适的方法时,Android Studio 总是自动完成,所以这是我注意到的第一件奇怪的事情。
- 当上面提到的不起作用时,我手动进行了导入,当我输入要导入的内容时,我确实得到了 com.google.common.truth.Truth 的建议......这表明至少 jar 文件在某个地方被发现。手动导入后,Android Studio 开始按照我之前的预期从 Truth 建议方法。
因此,在完成上述步骤后,我尝试运行测试,但仍然遇到未解决的问题。
任何人都可以尝试对此有所了解吗?有没有人遇到过这种情况。我将非常感谢任何形式的帮助!
java - 如何覆盖 google.Truth 中测试的默认失败消息?
我正在编写一个断言文档不包含特定字符串的测试。当测试失败时,它会在表单中打印“实际”值
文件很长。最好不要打印它而只打印文档的名称。我试过 assertWithMessage() 但它只添加一条消息,而不是替换默认消息。
google-truth - 如何用谷歌真相否定断言
如果是有序的,则可以测试整数列表:
但是如何测试它没有被订购呢?
有没有办法写:
或者更一般地说,有没有办法以方便的方式用真理否定断言?
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 时,这些是失败的编译器选项(路径被截断)。
android - androidTestImplementation Google Truth 1.0 和实现 Google Guava 27.0.1 无法满足的版本约束
简而言之
我无法使用以下添加的依赖项构建最小的新Android Studio项目:
如何重现
我就是这样做的,但当然还有其他方法。
- 在Android Studio 3.5.2中:
- 文件→新建→新建项目...
- 在创建新项目对话框中:
- 手机和平板电脑选项卡 →不添加活动→下一步
- 名称,包名,保存位置:随便你
- 语言:Java
- 最低 API 级别:API 28
- 该项目将支持即时应用程序:已禁用
- 结束
- 在./app/build.gradle:
- 添加
implementation 'com.google.guava:guava:27.0.1-android'
和androidTestImplementation "com.google.truth:truth:1.0"
到dependencies
- 添加
- 在ExampleInstrumentedTest.java 中
- 右键单击
class ExampleInstrumentedTest
并选择运行'ExampleInstrumentedTest'
- 右键单击
预期
测试通过
实际
构建错误:
如何解决此构建问题?
unit-testing - 如何检查 Google Truth 断言中的字符串相等性?
Truth.assertThat(actual).matches(expected)
还是Truth.assertThat(actual).isEqualTo(expected)
?
文档说matches()方法以正则表达式的形式接收一个字符串,但不确定字符串文字是否也有效?这就是让我感到困惑的原因。