Java 如何跳过在执行期间挂起/卡住的测试Selenium-Maven-Jenkins

Java 如何跳过在执行期间挂起/卡住的测试Selenium-Maven-Jenkins,java,maven,selenium,jenkins,maven-surefire-plugin,Java,Maven,Selenium,Jenkins,Maven Surefire Plugin,关于我的问题,我想请求你的帮助。我有一个包含50个测试脚本的回归套件(.xml)。我们可以使用Maven在Jenkins中执行回归套件,但它突然挂起/卡住了。例如: 测试用例1-15已经完成,但在测试用例16中,构建/执行突然停留/挂起在某个步骤上。我试图在Eclipse中执行测试用例16,以了解哪个步骤/代码存在问题,但它工作正常 我想问一下,是否有maven surefire功能,当它检测到测试脚本被卡住/挂起一定时间(例如5分钟)时,它将使该测试脚本失败,然后继续下一个测试脚本 请看下面我

关于我的问题,我想请求你的帮助。我有一个包含50个测试脚本的回归套件(.xml)。我们可以使用Maven在Jenkins中执行回归套件,但它突然挂起/卡住了。例如:

测试用例1-15已经完成,但在测试用例16中,构建/执行突然停留/挂起在某个步骤上。我试图在Eclipse中执行测试用例16,以了解哪个步骤/代码存在问题,但它工作正常

我想问一下,是否有maven surefire功能,当它检测到测试脚本被卡住/挂起一定时间(例如5分钟)时,它将使该测试脚本失败,然后继续下一个测试脚本

请看下面我的pom.xml

 <build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.5.1</version>
            <configuration>
                <target>1.8</target>
                <source>1.8</source>
            </configuration>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>2.19.1</version>
            <inherited>true</inherited>
            <configuration>
                <testFailureIgnore>false</testFailureIgnore>
                <suiteXmlFiles>
                    <suiteXmlFile>${xmlPath}</suiteXmlFile>
                </suiteXmlFiles>
            </configuration>
        </plugin>
    </plugins>
  </build>

org.apache.maven.plugins
maven编译器插件
3.5.1
1.8
1.8
org.apache.maven.plugins
maven surefire插件
2.19.1
真的
假的
${xmlPath}

通过在pom.xml中将此属性设置为true,可以让maven忽略测试失败

<testFailureIgnore>true</testFailureIgnore>
true

您可以在测试本身的测试注释中添加超时:

@Test(timeout=600000)  //Fails if the method takes longer than 10 minutes
它以毫秒为单位,因此您只需确定测试所需的最长时间,然后

编辑:如果只想设置一次,而不必为每个单独的测试添加超时,则可以在基类中设置规则:

import org.junit.Rule;
import org.junit.rules.TestWatcher;

...

@Rule
public TestWatcher watcher = new TestWatcher() {
    @Override
    public Statement apply(Statement base, Description description) {           
        if (description.getMethodName().toLowerCase().contains("thisTestTakesLonger")) {
            return new FailOnTimeout(base, 600000); //10 minutes = 600000
        } else {
            return new FailOnTimeout(base, 300000); //5 minutes = 300000
        }  
    }
};

else是全局超时,if是指如果您有一个单独的测试需要更长的时间(如果每个测试的长度都差不多,您可能只需要else中的位)

似乎OP正在寻找一种方法来检索挂起/卡住时正在执行的
线程。ThanksHow它与硒有关吗?你能考虑一下你的工作吗?一定要提到执行挂起/停止的行。感谢我们使用selenium来创建和测试我们的自动化脚本。在jenkins中执行脚本时,我们使用maven。实际上,我们看不到代码中的确切行,因为它在执行期间挂起/卡住。我认为这是一个很好的解决方法。但是有没有其他方法可以让我只更新POM,然后所有的更改都会应用到所有的脚本中?我不知道POM中是否有方法,但是如果是想找到一种方法在一个地方设置它,那么如果你的测试是从基类派生的,你可以在那里设置一个全局超时。我不记得我们是怎么做到的(我想这是有规律的),但我会在早上回来工作的时候检查并更新答案。好的。我等你的答复。谢谢。:)