问题标签 [assertj]

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 投票
2 回答
893 浏览

java - 如何在代码中表达这个特殊的数组断言?

我目前正在使用 FEST 或 AssertJ 进行断言。我遇到了一个我想断言流动数组的结:

那么我该如何写这样的断言

我在 FEST 中没有看到 containsOthers,或者我错过了同等的东西?我有点惊讶 FEST 或 AssertJ 不能断言从某个指定索引开始的索引范围,因为它们强调流畅简洁的断言代码。还是有好的选择?

到目前为止,我必须将它分成两个断言并手动取出第一个元素进行检查,然后取出其他元素进行检查,总共三行。那是一团糟。

0 投票
1 回答
269 浏览

java - 泛型和 ClassCastException:为什么我会得到这个异常,我该如何“解决”它?

对于我的一个项目,我试图摆脱基于字符串的单元测试;我现在作为目标的一门课是ParsingResult

我已经成功地用自定义AssertJ断言转换了另一个类,所以我现在正在尝试为我的下一个“受害者”编写一个自定义断言类。课程是这样的:

为了对其进行测试,我尝试将其插入到我最终要删除的测试文件中:

在标记的行中HERE,它失败了:

堆栈跟踪的最后一行是这一行:

org.assertj.core.api.AbstractAssert.<init>(AbstractAssert.java:63)是:

但我迷路了;我无法理解为什么会发生这种情况。我已经成功编写了两个自定义断言(herehere),但这是我第一次看到这个错误;这里唯一的区别是我尝试为其创建断言类的类有一个类型参数。

我错过了什么?

0 投票
2 回答
924 浏览

java - 如何使用 FEST assertThat(...) 方法测试类对象之间的相等性?

如何使用 FESTassertThat(...)方法测试类对象是否相等?

例子:

以上不编译。该isEqualTo方法抱怨。我应该使用其他方法来测试类对象之间的相等性吗?

0 投票
7 回答
13460 浏览

java - 如何使用 assertj 对键和值进行更深入的匹配

假设我有这样的课程:

后来,一张地图

使用 assertj,测试 characterAges 是否包含“Frodo”字符的最佳方法是什么?对于这个年龄,我可以这样做:

我知道我可以做到:

但后来我失去了流利度。我真正想要的是这样的:

甚至更好,这样我就可以确保我的键和值匹配:

这样的事情可能吗?

0 投票
1 回答
205 浏览

android - 为 androidTest 增加 minSdk

什么是增加 androidTest 的 minSDK 的好方法?背景是这样的:

我不只是想增加 minSDK 并为仅用于测试的库删除用户。

0 投票
4 回答
5121 浏览

java - Ambiguous method call with Lambda in Java

I have defined a static assertThat method to extend AssertJ. This method accepts a lambda expression of the type:

The signature looks like this:

I want to use this method with a static import. But it is ambiguous. The compiler doesn't know whether assertThat(Iterable) or my method should be used. I don't understand how a void method can conflict with a method that returns an Iterator<T>.

Any idea how to resolve this conflict (without writing the class name in front of assertThat)?

0 投票
2 回答
7468 浏览

hamcrest - 在 AssertJ 中测试一件事或另一件事是否成立

我正在将一些测试从 Hamcrest 转换为 AssertJ。在 Hamcrest 中,我使用以下代码段:

也就是说,列表可能是那个或那个。我如何在 AssertJ 中表达这一点?该anyOf函数(当然,any不是any ,但这将是第二个问题)需要一个Condition; 我自己已经实现了,但感觉好像这应该是一个常见的情况。

0 投票
3 回答
1587 浏览

android - Android AssertJ 1.0.0 与 Android gradle 1.1.1

这是我build.gradle有冲突的一部分:

我在日志中看到的问题:

显然,它从类路径中删除了冲突的依赖项。我不确定它是插件gradle还是android gradle插件。

我尝试了下一个:

但是我仍然有编译错误,所以排除了依赖。

我尝试了下一个:

但看起来它不起作用,因为它在第一次冲突时没有失败,而且我仍然有编译错误。

你会有什么建议?

更新删除依赖项是什么意思-我看到很多assertj未找到的编译错误

0 投票
4 回答
43922 浏览

java - 您可以向 AssertJ assertThat 添加自定义消息吗?

我们有一个测试套件,主要使用带有 Hamcrest 匹配器的 JUnit 断言。我们的一个团队开始尝试AssertJ,并以其语法、灵活性和声明性给人们留下了深刻的印象。JUnit 提供了一个我在 AssertJ 中找不到的功能:添加自定义断言失败消息。

我们经常比较那些不是为了人类可读性而制作的对象,它们会有看似随机的 Id 或 UUID,并且不可能通过它们包含的数据来判断它们应该是什么。对于我们的代码库来说,这是一个不可避免的情况,遗憾的是,它实现的部分目的是在其他服务之间映射数据,而不必了解它是什么。

在 JUnit 中,该方法在param之前assertThat提供了一个带有String reason参数的版本。Matcher<T>这使得添加一个简短的调试字符串可以轻松解决问题,例如比较对人类的意义。

另一方面,AssertJ 提供了许多不同的泛型static assertThat方法,它们返回某种形式的接口 Assert或其众多实现类之一。此接口不提供设置自定义消息以包含在故障中的标准方法。

有没有办法从 AssertJ API 或其扩展之一获得此功能,而不必为我们想要添加消息的每个断言类型创建自定义断言类?

0 投票
1 回答
262 浏览

assertj - 如何从 AbstractAssert 覆盖泛型 isEqualTo

在其接口中具有泛型参数的方法:

Object在其抽象类中被参数覆盖:

如何isEqualTo()用 的泛型参数A覆盖Assert<S, A>,如

由于类型擦除而失败:

名称冲突:MyAssert 中的 isEqualTo(MyClass) 覆盖了一个擦除方法与另一个方法相同的方法,但都没有覆盖另一个

第一种方法:AbstractAssert 中的 isEqualTo(Object)
第二种方法:Assert 中的 isEqualTo(A#2),
其中 A#1、A#2 是类型变量:
A#1 扩展类 AbstractAssert 中声明的
对象 A#2 扩展接口中声明的对象断言

还有其他方法吗?

assertJ用 Object 遮蔽泛型参数有什么好处?