有没有办法让JUnit规则或类似的东西给每个失败的测试提供第二次机会,只需尝试再次运行它.
背景:我有一大堆用JUnit编写的Selenium2-WebDriver测试.由于非常激进的时间(点击后只有很短的等待时间),一些测试(100个中的1个,总是不同的测试)可能会失败,因为服务器有时响应速度稍慢.但我不能让等待时间太久以至于它肯定足够长,因为那时测试将永远持续下去.) - 所以我认为这个用例即使需要一秒钟,测试也是绿色的是可以接受的尝试.
当然,最好有3个中的2个(重复3次失败的测试,如果其中两个测试是正确的,则将它们视为正确),但这将是未来的改进.
在我们的构建中,某些情况由于我们无法控制的原因而失败,或者需要很长时间才能正确调试.异步javascript等事情
无论如何,有时候他们有时候他们不工作,所以我认为将标签添加到诸如@rerun_on_failure或@retry之类的场景会很好,这会在构建失败之前重试场景X次.
我知道这不是一个理想的解决方案,但测试仍然很有价值,我们希望保持它没有误报
实际测试未通过链接点击并希望将跟踪事件发送到服务器进行分析(通过javascript).有时,selenium web-driver加载下一页太快,事件没有时间发送.
谢谢
我有一个Cucumber-JVM,JUnit,Selenium设置.我通过RunSmokeTests.java在Eclipse中使用JUnit来启动运行.我还设置了一个maven配置文件来从命令行运行测试,将来可能还有Jenkins.
当测试运行时,其中一些可能会失败,主要是由于应用程序花费的时间超过预期.然后我必须重新运行这些场景.目前我通过手动将@rerun标签附加到失败然后运行的标签来运行它们RunReruns.java,这类似于RunSmokeTest.java带@rerun标签.
随着自动化测试数量的增加,标记测试并开始运行并清除标签非常耗时.有没有使用Cucumber-JVM重新运行失败测试的自动化方法?
RunSmokeTests.java
package testGlueClasses;
import cucumber.api.junit.Cucumber;
import org.junit.runner.RunWith;
@RunWith(Cucumber.class)
@Cucumber.Options(features = "src/test/java", strict = true, format = {
"html:target/CucumberReport", "json:target/JSON/Cucumber.json",
"FrameworkCore.CustomTestReporter" }, tags = { "@SmokeTest" }, glue = {
"FrameworkCore", "MyApp.Utils", "MyApp.StepDefinitions" })
public class RunSmokeTests {
}
Run Code Online (Sandbox Code Playgroud)
Maven片段:
<profile>
<id>smoke</id>
<properties>
<include.tests>
**/RunSmokeTests.java
</include.tests>
</properties>
</profile>
Run Code Online (Sandbox Code Playgroud)