Я использую мягкое утверждение TestNG, как в следующем коде.
public class SoftAssertionTest {
SoftAssert softAssert = new SoftAssert();
@Test
public void test1(){
softAssert.assertEquals(2, 3);
softAssert.assertEquals(2, 2);
softAssert.assertEquals(2, 5);
softAssert.assertAll();
}
@Test
public void test2(){
softAssert.assertEquals(2, 2);
softAssert.assertTrue(false);
softAssert.assertAll();
}
}
Но когда этот тестовый класс запущен, для test1
он вернет результат, подобный -
java.lang.AssertionError: The following asserts failed:
expected [3] but found [2],
expected [5] but found [2]
, что правильно, но для test2
он возвращает ошибкиtest1
и test2
java.lang.AssertionError: The following asserts failed:
expected [3] but found [2],
expected [5] but found [2],
expected [true] but found [false]
На самом деле, он должен возвращать результат только test2
.
Этого можно достичь, создав локальную переменную SoftAssert
в каждом методе тестирования.Но это может быть дубликатом кода.
Есть ли какой-либо способ, которым мы можем использовать один и тот же объект, и в каждом методе теста очищать результаты теста от этого объекта, чтобы в новом методе теста он фиксировал только ошибки, связанные с этим методом.