org.testng.Assert
Assert.assertEqualsAssert.assertNotNullAssert.assertFalse 不存在某些数据时,为trueAssert.assertTrueAssert.failDouble a = 3.14; double b = 3.14; Double deltaA = 3.14; double deltaB = 0.1; assertEquals(a, b,deltaA); true = a-b 小于 deltaA false = a-b 大于等于 deltaAString message = "异常描述"; assertEquals(a, b, message);b为预期值 a为实际值String[] rto1 = { "boolean", "BigInteger", "List", }; String[] rto2 = { "List", "BigInteger", "boolean", }; Assert.assertEqualsNoOrder(rto1, rto2); 无序校验
org.testng.asserts.SoftAssert
final SoftAssert sa = new SoftAssert();sa.assertTruesa.assertAll sa.fail("soft assert with missing root cause", hiddenExc);异常描述message重新定义
重写message消息
String message = "My message";
SoftAssert sa = new SoftAssert();
sa.assertTrue(false, message);
sa.assertAll
重置test-message
@Test(dataProvider = "messages")
public void testDefaultMessage(String actualMsg, String expectedMsg) {
try {
final SoftAssert sa = new SoftAssert();
sa.assertTrue(false);
sa.assertAll(actualMsg);
Assert.fail();
} catch (AssertionError exc) {
Assert.assertNotNull(exc.getMessage());
Assert.assertTrue(exc.getMessage().startsWith(expectedMsg));
}
}
重新声明校验方法
@Test
public void testOnSucceedAndFailureCalled() {
final Collection<IAssert> succeed = new ArrayList<>();
final Collection<IAssert> failures = new ArrayList<>();
final SoftAssert sa =
new SoftAssert() {
@Override
public void onAssertSuccess(IAssert assertCommand) {
succeed.add(assertCommand);
}
@Override
public void onAssertFailure(IAssert assertCommand, AssertionError ex) {
failures.add(assertCommand);
}
};
sa.assertTrue(true);
sa.assertTrue(false);
Assert.assertEquals(succeed.size(), 1, succeed.toString());
Assert.assertEquals(failures.size(), 1, failures.toString());
}
所有异常message收口汇总
@Test
public void testAssertAllCount() {
String message = "My message";
SoftAssert sa = new SoftAssert();
sa.assertTrue(true);
sa.assertTrue(false, message);
try {
sa.assertAll();
Assert.fail("Exception expected");
} catch (AssertionError e) {
String[] lines = e.getMessage().split("\r?\n");
Assert.assertEquals(lines.length, 2);
lines[1] = lines[1].replaceFirst(message, "");
Assert.assertFalse(lines[1].contains(message));
}
}
校验抛出异常是否包含message描述
private static final String hiddenMsg = "hidden msg";
@Test(description = "GITHUB-1778", dataProvider = "dp")
public void testRootCauseInSoftFail(Exception hiddenExc) {
try {
SoftAssert s = new SoftAssert();
s.fail("soft assert with missing root cause", hiddenExc);
s.assertAll();
} catch (AssertionError soft) {
assertThrowableContainsText(soft, hiddenMsg);
}
}
@DataProvider(name = "dp")
public Object[][] getExceptions() {
return new Object[][] {{new Exception(hiddenMsg)}, {new Exception(new Exception(hiddenMsg))}};
}
private static void assertThrowableContainsText(Throwable hard, String text) {
StringWriter sw = new StringWriter();
PrintWriter pw = new PrintWriter(sw);
hard.printStackTrace(pw);
String stackTrace = sw.toString();
Assert.assertTrue(stackTrace.contains(text));
}
}