Java @当调用方法的softassert失败时,测试失败
软断言无法从父类继续测试用例: 在下面的测试中,第二个方法Java @当调用方法的softassert失败时,测试失败,java,selenium,testng,assertions,Java,Selenium,Testng,Assertions,软断言无法从父类继续测试用例: 在下面的测试中,第二个方法AssertTesting.softassert()在软断言失败的情况下完成,但在第二个方法之后运行停止。我想从父类执行第三个方法AssertTesting.softassert2()。我可以使用软断言的任何其他方式,以便继续执行 package Assertion; import org.testng.annotations.Test; public class AssertT
AssertTesting.softassert()
在软断言失败的情况下完成,但在第二个方法之后运行停止。我想从父类执行第三个方法AssertTesting.softassert2()
。我可以使用软断言的任何其他方式,以便继续执行
package Assertion;
import org.testng.annotations.Test;
public class AssertTestingAll
{
@Test
public void callallAssert()
{
AssertTesting.Hardassert();
AssertTesting.softassert();
AssertTesting.softassert2();
}
}
package Assertion;
import org.junit.Assert;
import org.testng.annotations.Test;
import org.testng.asserts.SoftAssert;
public class AssertTesting
{
static SoftAssert sa=new SoftAssert();
public static void Hardassert()
{
// Assert.fail("Assertion fail");
Assert.assertEquals("strings dont match:", "Test", "Test");
{
String [] name1= {"jeeva","balan","madhu"};
String [] name2= {"jeeva","balan","madhu"};
Assert.assertArrayEquals("name does not match", name1, name2);
}
Assert.assertFalse("numbers does not matches ", 2<2);
Assert.assertSame("jeeva", "jeeva");
}
public static void softassert()
{
sa.assertEquals("strings dont match:", "Test1", "Test");
{
String [] name1= {"jeeva","balan","madhu"};
String [] name2= {"jeeva","balan","madhu"};
Assert.assertArrayEquals("name does not match", name1, name2);
}
System.out.println("execution continued");
sa.assertFalse(2<2,"numbers does not matches ");
sa.assertSame("jeeva", "jeeva1");
sa.assertAll();
}
public static void softassert2()
{
sa.assertEquals("strings dont match:", "Test1", "Test");
{
String [] name1= {"jeeva","balan","madhu"};
String [] name2= {"jeeva","balan","madhu"};
Assert.assertArrayEquals("name does not match", name1, name2);
}
System.out.println("execution continued");
sa.assertFalse(2<2,"numbers does not matches ");
sa.assertSame("jeeva", "jeeva1");
sa.assertAll();
}
}
包断言;
导入org.testng.annotations.Test;
公共类资产测试所有
{
@试验
public void callallAssert()
{
AssertTesting.Hardassert();
AssertTesting.softassert();
AssertTesting.softassert2();
}
}
包断言;
导入org.junit.Assert;
导入org.testng.annotations.Test;
导入org.testng.asserts.SoftAssert;
公共类资产测试
{
静态SoftAssert sa=新的SoftAssert();
公共静态void硬断言()
{
//断言失败(“断言失败”);
Assert.assertEquals(“字符串不匹配:”、“测试”、“测试”);
{
字符串[]名称1={“jeeva”、“balan”、“madhu”};
字符串[]name2={“jeeva”、“balan”、“madhu”};
Assert.assertArrayEquals(“名称不匹配”,名称1,名称2);
}
Assert.assertFalse(“数字不匹配”SoftAssert
的两种方法,如assertEquals
或assertFalse
仅记录条件是否良好,并且它们不会向TestNG
运行程序抛出任何表示测试失败的异常。实际检查和异常抛出发生在assertAll
方法中
这解释了出现此错误的原因。softassert
方法运行assertAll
,该方法抛出异常,测试将在该点停止执行
如果要继续测试,您需要对所有测试使用相同的SoftAssert
实例,并在整个测试的最后运行assertAll
。在SoftAssert()
中的一个断言,因此当您在方法末尾使用sa.assertAll();
时,将引发异常
当断言失败时,不要抛出异常,而是记录
失败。如果
至少有一个断言失败
如果要在任何断言失败时使测试失败,请在测试结束时调用assertAll();
。您预期的结果是:sa.assertFalse(2//如果要继续测试,则需要对所有测试使用相同的SoftAssert实例,并在整个测试的最后运行assertAll//这起到了作用,我已在父类中启动SoftAssert类,并在父类方法中结束SoftAssert all。在父类方法all method对象中继续执行,并列出了所有错误s和执行完成。