gpt4 book ai didi

java - 如何使用 Junit 测试向 Leanft 添加重试逻辑?

转载 作者:行者123 更新时间:2023-12-02 12:10:06 24 4
gpt4 key购买 nike

虽然 LeanFT 使用 JUnit 作为其测试运行器,但它似乎并未实现“TestRule”。这不包括其他地方描述的“标准”方法。

How to Re-run failed JUnit tests immediately?

谁有办法解决这个问题吗?

最佳答案

你说的似乎是报告中没有检测结果。事实上,使用 TestRule 时似乎不再自动报告

但是,您可以手动报告您想要报告的任何内容。

这是 Junit 测试的示例,它报告我们希望它报告的内容。

import com.hp.lft.report.CaptureLevel;
import com.hp.lft.report.ReportLevel;
import com.hp.lft.report.Reporter;
import com.hp.lft.sdk.web.Browser;
import com.hp.lft.sdk.web.BrowserFactory;
import com.hp.lft.sdk.web.BrowserType;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.*;
import org.junit.runner.Description;
import org.junit.runners.model.Statement;
import unittesting.UnitTestClassBase;
import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;

public class RetryTest extends UnitTestClassBase {
@BeforeClass
public static void setUpBeforeClass() throws Exception {
instance = new LeanFtTest();
globalSetup(LeanFtTest.class);
}

@AfterClass
public static void tearDownAfterClass() throws Exception {
globalTearDown();
}


public class Retry implements TestRule {
private int retryCount;

public Retry(int retryCount) {
this.retryCount = retryCount;
}

public Statement apply(Statement base, Description description) {
return statement(base, description);
}

private Statement statement(final Statement base, final Description description) {
return new Statement() {
@Override
public void evaluate() throws Throwable {
Throwable caughtThrowable = null;

// implement retry logic here
for (int i = 0; i < retryCount; i++) {
try {
base.evaluate();
return;
} catch (Throwable t) {
caughtThrowable = t;
System.err.println(description.getDisplayName() + ": run " + (i+1) + " failed");
}
}
System.err.println(description.getDisplayName() + ": giving up after " + retryCount + " failures");
throw caughtThrowable;
}
};
}
}

@Rule
public Retry retry = new Retry(3);

@Test
public void test2() throws Exception{
Reporter.startReportingContext("Reporting for test2");
Reporter.reportEvent("Reporting", "Reporting stuff", Status.Passed);
Reporter.reportEvent("Reporting", "Reporting some more stuff", Status.Failed);
Reporter.endReportingContext();
Object o = null;
o.equals("foo");
}
}

它是这样的: enter image description here

关于java - 如何使用 Junit 测试向 Leanft 添加重试逻辑?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46607536/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com