【发布时间】:2018-08-16 14:16:46
【问题描述】:
我有实际和预期的对象,每个对象都包含一些数据成员。对于一个数据成员,我需要做一个包含检查而不是等于检查,其余的,等于检查完成。有没有办法做到这一点?
【问题讨论】:
-
没有智能的方法可以让 assertEquals 自行识别和检查,您必须通过代码以编程方式处理。
标签: testng assert assertions
我有实际和预期的对象,每个对象都包含一些数据成员。对于一个数据成员,我需要做一个包含检查而不是等于检查,其余的,等于检查完成。有没有办法做到这一点?
【问题讨论】:
标签: testng assert assertions
不是隐含的,但您至少有以下 2 个选项:
依赖关系:
<dependency>
<groupId>org.hamcrest</groupId>
<artifactId>hamcrest-core</artifactId>
<version>1.3</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.assertj</groupId>
<artifactId>assertj-core</artifactId>
<version>3.9.0</version>
<scope>test</scope>
</dependency>
代码:
import org.testng.annotations.Test;
import static org.assertj.core.api.Assertions.assertThat;
import static org.hamcrest.CoreMatchers.*;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.testng.Assert.assertTrue;
public class MyTest {
@Test
public void shouldCheckStringContains() {
String myString = "This is my string";
// TestNG
assertTrue(myString.startsWith("This")
&& myString.contains("is")
&& myString.contains("my")
&& myString.endsWith("string"));
// Hamcrest
assertThat(myString, allOf(startsWith("This"),
containsString("is"),
containsString("my"),
endsWith("string")));
//AssertJ
assertThat(myString).startsWith("This")
.contains("is")
.contains("my")
.endsWith("string");
}
}
【讨论】: