В SoftAssertion, он печатает только сообщение о сбое, когда тест не пройден, но нет условий для печати сообщения о прохождении, когда тест проходит.Я хочу напечатать сообщение пропуска, когда SoftAssertion проходит.
Я написал ниже метод оболочки для AssertEquals, как показано ниже: 1. SoftAssertion.java == >>
import org.testng.asserts.SoftAssert;
public class SoftAssertion {
public SoftAssert softAssert = new SoftAssert();
public SoftAssertion() {
}
public void assertAll(){
softAssert.assertAll();
}
public void assertEquals(String actual, String expected, String failMessage, String passMessage) {
if (actual.equals(expected)){
softAssert.assertEquals( actual, expected, failMessage);
Report.testPass(passMessage);
} else{
softAssert.assertEquals( actual, expected, failMessage);
Report.testFail(failMessage);
}
}
}
Тестовый класс == >>
public class NewSoftAssertTest {
@Test
public void myTest(){
Report.startReport("New Soft Assert Test",
"1) Test Soft Assert");
SoftAssertion softAssert = new SoftAssertion();
softAssert.assertEquals("A","B","Strings are not equal", "Strings are equal");
softAssert.assertEquals("Hello", "Hello", "Hello is not equal to Hello", "Hello is equal to Hello");
softAssert.assertAll();
}
}
Приведенный выше код работает отлично.Я хочу знать, является ли это правильным способом записи пропускаемого сообщения в TestNG SoftAssert?
В одном из постов кто-то предложил добавить блок try catch, как показано ниже 1. SoftAssertion .java == >>
import org.testng.asserts.SoftAssert;
public class SoftAssertion {
public SoftAssert softAssert = new SoftAssert();
public SoftAssertion() {
}
public void assertAll(){
softAssert.assertAll();
}
public void assertEquals(String actual, String expected, String failMessage, String passMessage){
try {
softAssert.assertEquals(actual, expected, failMessage);
System.out.println("Assertion passed");
Report.testPass(passMessage);
}catch (AssertionError e){
System.out.println("Assertion failed");
Report.testFail(failMessage);
throw e;
}
}
}
Тестовый класс == >>
public class NewSoftAssertTest {
@Test
public void myTest(){
Report.startReport("New Soft Assert Test",
"1) Test Soft Assert");
SoftAssertion softAssert = new SoftAssertion();
softAssert.assertEquals("A","B","Strings are not equal", "Strings are equal");
softAssert.assertEquals("Hello", "Hello", "Hello is not equal to Hello", "Hello is equal to Hello");
softAssert.assertAll();
}
}
На консоли он правильно показывает ошибку подтверждения для A и B, но в отчете он пропускает шаг и печатает «Строки равны»
Q1.Мой вопрос, где это идет не так?Он должен войти в блок try catch и записать сообщение об ошибке.
Q2.Какой подход лучше, первый или второй с использованием try catch?