当前位置: 首页 > 知识库问答 >
问题:

为什么throw new SkipException()会跳过我的所有方法?

徐秋月
2023-03-14

为什么throw new SkipException()会跳过所有类中的所有方法?

  1. 第一类有一个失败的方法,因此该类中的其余方法将被跳过,并且跳过计数器设置为0。
  2. 类2应该执行所有方法,并且所有方法都应该在类2中传递,因为跳过计数器设置为0并且在类1执行之后。

下面的代码似乎跳过所有方法,即使只有一个assert.fail包含在类1中?

测试基地:

import org.testng.annotations.BeforeMethod;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeClass;
import org.testng.ITestResult;
import org.testng.SkipException;

  public class TestBase {
        static int numb = 0;
      @BeforeMethod
      public void beforeMethod() {
          if(numb == 1) {
                throw new SkipException("Skipping this test");
          }  
      }

      @AfterMethod
      public void afterMethod(ITestResult testResult) {
            if (testResult.getStatus() == ITestResult.FAILURE) {
                numb = 1;
            }
      }

      @BeforeClass
      public void beforeClass() {
          TestBase.numb = 0;
      }

测试1:

import org.testng.annotations.Test;

public class Test1 extends TestBase {
    @Test(priority = 1)
    public void test1() throws Exception {
        Assert.fail();
    }

    @Test(priority = 2)
    public void test2() throws Exception {
        System.out.println("method2");
    }

    @Test(priority = 3)
    public void test3() throws Exception {
        System.out.println("method3");
    }
}

测试2:

import org.testng.annotations.Test;

public class Test2 extends TestBase {
    @Test(priority = 1)
    public void test1() throws Exception {
        System.out.println("method4");
    }

    @Test(priority = 2)
    public void test2() throws Exception {
        System.out.println("method5");
    }

    @Test(priority = 3)
    public void test3() throws Exception {
        System.out.println("method6");
    }
}

控制台输出:

..
... TestNG 6.9.10 by Cédric Beust (cedric@beust.com)
...

[TestNG] Running:
  C:\Users\Gianni.Bruno\Desktop\BuyAGiftFramework\BuyAGiftFramework\Test.xml

[TestRunner] Starting executor for test BuyAGift Automation Tests with time out:2147483647 milliseconds.
SKIPPED CONFIGURATION: @BeforeMethod beforeMethod
SKIPPED CONFIGURATION: @AfterMethod afterMethod
SKIPPED CONFIGURATION: @BeforeMethod beforeMethod
SKIPPED CONFIGURATION: @AfterMethod afterMethod
SKIPPED CONFIGURATION: @BeforeClass beforeClass
SKIPPED CONFIGURATION: @BeforeMethod beforeMethod
SKIPPED CONFIGURATION: @AfterMethod afterMethod
SKIPPED CONFIGURATION: @BeforeMethod beforeMethod
SKIPPED CONFIGURATION: @AfterMethod afterMethod
SKIPPED CONFIGURATION: @BeforeMethod beforeMethod
SKIPPED CONFIGURATION: @AfterMethod afterMethod
FAILED: test1
junit.framework.AssertionFailedError
    at junit.framework.Assert.fail(Assert.java:47)
    at junit.framework.Assert.fail(Assert.java:53)
    at BuyAGiftFramework.test.Test1.test1(Test1.java:9)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:86)
    at org.testng.internal.Invoker.invokeMethod(Invoker.java:643)
    at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:820)
    at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1128)
    at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:129)
    at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:112)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)

SKIPPED: test2
SKIPPED: test3
SKIPPED: test1
SKIPPED: test2
SKIPPED: test3

===============================================
    BuyAGift Automation Tests
    Tests run: 6, Failures: 1, Skips: 5
    Configuration Failures: 0, Skips: 11
===============================================


===============================================
BuyAGift_Automation_Scripts_by_GBruno
Total tests run: 6, Failures: 1, Skips: 5
Configuration Failures: 0, Skips: 11
===============================================

[TestNG] Time taken by org.testng.reporters.JUnitReportReporter@366e2eef: 14 ms
[TestNG] Time taken by org.testng.reporters.XMLReporter@1936f0f5: 16 ms
[TestNG] Time taken by org.testng.reporters.SuiteHTMLReporter@3f2a3a5: 32 ms
[TestNG] Time taken by org.testng.reporters.jq.Main@614c5515: 94 ms
[TestNG] Time taken by [FailedReporter passed=0 failed=0 skipped=0]: 16 ms
[TestNG] Time taken by org.testng.reporters.EmailableReporter2@6537cf78: 19 ms

测试执行XML:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="Automation_Scripts_by_GB" verbose="2" parallel="classes" thread-count="1">

    <test name="BuyAGift Automation Tests">
        <packages>
            <package name="BuyAGiftFramework.test.*"></package>
        </packages>
    </test>
</suite>

共有1个答案

相德宇
2023-03-14

configFailurePolicy的默认行为是“跳过”。因为若您在配置方法中遇到异常,则无需运行测试。但如果仍要运行测试,请将此配置更改为“继续”,可以通过更新配置来实现

html lang-html prettyprint-override">  <suite name="SuiteName" parallel="tests" thread-count="1" verbose="10" configfailurepolicy="continue">
 类似资料:
  • 我想我的程序跳过了while循环,但我真的不确定到底发生了什么。该函数应该通过找到GCD,然后将分子和分母除以该数字来减少分数。 我得到分子和分母的绝对值,以确保如果分数是负数,我会在最后保持它。如果分子为0,则要求我返回(0,1)。问题是关于while循环。。。似乎它被完全跳过了。有什么建议吗?

  • 每当我运行下面的java代码时,它都会编译,但包含替换方法的行似乎被跳过,因此输入的字符串和输出(newMessage)是相同的。为什么?变量 C 和变量 D 是字符... 进口java.util.Scanner;

  • 根据有关font-weight和其他来源的MDN页面,使文本内容“比父元素(在字体的可用权重中)暗一个字体权重”。 我有一个测试页面,“开放无”字体包括从谷歌字体,权重300,400(又名“普通”),600,700(又名“粗体”),和800。手动设置数字字体粗细与预期一样工作,但使用似乎会跳过字体粗细600。 Firefox和Chrome在这一点上是一致的,所以我可能误解了“一步”的含义。 这是一

  • 我正在为一个使用精灵工具包物理引擎的小型弹跳球游戏工作。我的问题是: 当我对弹跳球施加巨大的冲力使其快速落在地面上时,有时它可能会穿过地面(非常薄,高度=2)。 我在Apple文档中找到了这个,但它不起作用。 为小型或快速移动的对象指定高精度碰撞 当 Sprite Kit 执行碰撞检测时,它首先确定场景中所有物理体的位置。然后,它确定是否发生了冲突或接触。这种计算方法速度很快,但有时会导致错过碰撞

  • 问题内容: 我对maven的功能还很陌生。.我已经看到在放置依赖项的pom.xml中,有时仅提及groupID和工件ID,而跳过版本。为什么是这样?例如,以下依赖项来自springsource网站http://spring.io/guides/gs/authenticating- ldap/ 但是在stackoverflow的其他地方,也提到版本不是可选的。如果有人可以解释我会很高兴。 问题答案: