Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java @当调用方法的softassert失败时,测试失败_Java_Selenium_Testng_Assertions - Fatal编程技术网

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和执行完成。