- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
今天我遇到了一个问题,与Gradle中的beforeSuite{}
和afterSuite{}
有关。我在gradle 4.1的测试任务中添加了beforeSuite{}
和afterSuite{}
,但是每次执行测试时,它都会多次运行闭包。我想我已经使用-debug
将其范围缩小到了为单个任务生成的多个任务 Action 。
build.gradle:
task unzipfirefoxDriver(type: Copy) {
//https://github.com/mozilla/geckodriver/releases
def outputDir = file("$buildDir/webdriver/geckodriver")
outputs.dir(outputDir)
if (OperatingSystem.current().isWindows()) {
from(zipTree("drivers/geckodriver-${gechoVersion}-win64.zip"))
} else {
from(tarTree("drivers/geckodriver-${gechoVersion}-macos.tar.gz"))
}
into(outputDir)
def geckodriverFilename = OperatingSystem.current().isWindows() ? "geckodriver.exe" : "geckodriver"
map.put("firefox", new File(outputs.files.singleFile, geckodriverFilename))
}
task firefoxTest(type: Test) {
testLogging {
events 'started', 'passed'
}
reports {
html.destination = reporting.file("$name/tests")
junitXml.destination = file("$buildDir/test-results/$name")
}
beforeSuite { desc ->
println "Automation has Started"
}
afterSuite { desc, result ->
println "Automation has Finished - Results: ${result.resultType} (${result.testCount} tests, ${result.successfulTestCount} successes,
${result.failedTestCount} failures, ${result.skippedTestCount} skipped)"
}
outputs.upToDateWhen { false }
systemProperty("webdriver.gecko.driver", map."firefox".absolutePath)
systemProperty("geb.env", "firefox")
}
firefoxTest.dependsOn unzipfirefoxDriver
7:26:44.236 [INFO] [org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter] Executing task ':firefoxTest' (up-to-date check took 0.138 secs) due to:
Task.upToDateWhen is false.
17:26:44.237 [DEBUG] [org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter] Executing actions for task ':firefoxTest'.
17:26:44.237 [DEBUG] [org.gradle.internal.progress.DefaultBuildOperationExecutor] Build operation 'Execute task action 1/5 for :firefoxTest' started
17:26:44.237 [DEBUG] [org.gradle.internal.progress.DefaultBuildOperationExecutor] Completing Build operation 'Execute task action 1/5 for :firefoxTest'
17:26:44.237 [DEBUG] [org.gradle.internal.progress.DefaultBuildOperationExecutor] Build operation 'Execute task action 2/5 for :firefoxTest' started
17:26:44.237 [DEBUG] [org.gradle.internal.progress.DefaultBuildOperationExecutor] Completing Build operation 'Execute task action 2/5 for :firefoxTest'
17:26:44.237 [DEBUG] [org.gradle.internal.progress.DefaultBuildOperationExecutor] Build operation 'Execute task action 3/5 for :firefoxTest' started
17:26:44.238 [DEBUG] [org.gradle.internal.progress.DefaultBuildOperationExecutor] Completing Build operation 'Execute task action 3/5 for :firefoxTest'
17:26:44.238 [DEBUG] [org.gradle.internal.progress.DefaultBuildOperationExecutor] Build operation 'Execute task action 4/5 for :firefoxTest' started
17:26:44.238 [DEBUG] [org.gradle.internal.progress.DefaultBuildOperationExecutor] Completing Build operation 'Execute task action 4/5 for :firefoxTest'
17:26:44.238 [DEBUG] [org.gradle.internal.progress.DefaultBuildOperationExecutor] Build operation 'Execute task action 5/5 for :firefoxTest' started
17:26:44.239 [DEBUG] [org.gradle.api.internal.file.delete.Deleter] Deleting ..../test-results/firefoxTest/binary
17:26:44.242 [DEBUG] [org.gradle.internal.progress.DefaultBuildOperationExecutor] Build operation 'Resolve files of :testRuntimeClasspath' started
17:26:44.242 [DEBUG] [org.gradle.internal.progress.DefaultBuildOperationExecutor] Completing Build operation 'Resolve files of :testRuntimeClasspath'
17:26:44.242 [QUIET] [system.out] Automation has Started
17:26:44.243 [DEBUG] [TestEventLogger]
17:26:44.243 [DEBUG] [TestEventLogger] Gradle Test Run :firefoxTest STARTED
> Task :firefoxTest
Automation has Started
Automation has Started
Automation has Started
com.example.ReviewWidgetSpec > test 1 STARTED
com.example.ReviewWidgetSpec > test 1 PASSED
com.example.ReviewWidgetSpec > test 2 STARTED
com.example.ReviewWidgetSpec > test 2 PASSED
com.example.ReviewWidgetSpec > test 3 STARTED
com.example.ReviewWidgetSpec > test 3 PASSED
Automation has Finished - Results: SUCCESS (3 tests, 3 successes, 0 failures, 0 skipped)
Automation has Started
Automation has Finished - Results: SUCCESS (0 tests, 0 successes, 0 failures, 0 skipped)
Automation has Started
Automation has Finished - Results: SUCCESS (0 tests, 0 successes, 0 failures, 0 skipped)
Automation has Finished - Results: SUCCESS (3 tests, 3 successes, 0 failures, 0 skipped)
Automation has Finished - Results: SUCCESS (3 tests, 3 successes, 0 failures, 0 skipped)
BUILD SUCCESSFUL in 21s
4 actionable tasks: 1 executed, 3 up-to-date
最佳答案
在gradle中,需要调用beforeSuite和afterSuite。修改闭包以检查父级为空以找到根套件:
beforeSuite { descriptor, result ->
if(descriptor.parent == null){
//your logic
}
}
关于testing - gradle beforeSuite {}和afterSuite {}执行多次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48554060/
我已经尝试过这个:基类 package pages; import org.testng.annotations.BeforeSuite; public class BaseClass { @
我有一个 @BeforeSuite 注释的方法。 public class MySuiteTest { @BeforeSuite public static void doSometh
我一直致力于 TestNG,但我的一些代码存在问题。代码如下: public class Main { public String baseurl ; public WebDriver webdriv
今天我遇到了一个问题,与Gradle中的beforeSuite{}和afterSuite{}有关。我在gradle 4.1的测试任务中添加了beforeSuite{}和afterSuite{},但是每
我看到了很多例子,在每个例子中我都没有看到任何关于 testNG 中 beforeSuite 和 afterSuite 中需要静态的内容 我的场景是我有 MainRunner 和 BaseTest 来
我有以下 Ginkgo测试文件: package foo import ( "log" . "github.com/onsi/ginkgo" ) var _ = BeforeSuite
我在运行套件来设置每个测试所需的属性时尝试访问 ISuite。 代码如下: 公共(public)类 SingleTester{ IAttributes attributes; @BeforeSuite
当使用 groups 运行 TestNg 时,它会跳过 @BeforeClass 和 @BeforeSuite 方法。但是在没有组的情况下运行它会执行@BeforeClass 和@BeforeSuit
我们可以按照下面的方法来初始化测试数据吗?我想实现两点。 需要从文件中初始化/加载测试数据一次,并在所有数据提供者中使用相同的测试数据。考虑在@beforesuite类中实现测试数据加载器。 在 @t
如果满足@BeforeSuite 注解中的条件,是否有办法退出整个测试套件?也许是一种调用@AfterSuite 并绕过整个测试的方法? 我在@BeforeSuite 中调用数据库。如果查询返回任何结
我正在使用 TestNG 运行简单的自动化代码。我的代码行正在打印到控制台日志并正在执行 - 但我无法调试任何行。 是什么阻止我调试我的代码,即使它有效? @BeforeSuite(alwaysRun
我正在运行一个使用 TestNG 作为测试框架的 spring boot 应用程序。我的测试是这样设置的: 父类,负责设置逻辑并处理所有配置内容: @ContextConfiguration(clas
背景:我的目标是编写一个独立运行的 TestNG-Selenium 系统(没有字符串到 Maven 或 Ant 插件;只有 Java)。它必须允许测试用例接受参数,包括浏览器和域 URL。当 Test
我正在使用 Ginkgo(和 Gomega)包对 Go(lang) Rest API 进行单元测试。 我需要使用全局设置,这应该可以通过定义来实现 var _ = BeforeSuite(func()
方法#1:每次测试前登录: 优点: 每个测试都是不同的 session ,如果一个测试导致浏览器崩溃,只有该测试失败,不会影响其他测试。 可以并行测试。 缺点: 如果登录失败(因为 AUT 已关闭或登
我正在使用 Codeception 构建 API 验收测试。 我熟悉那里的单元测试,并且在运行该类的所有测试之前,我在这些类中使用了 setUp 方法来实现所需的所有逻辑。 但是我没有找到类似的验收测
我正在使用 Codeception 构建 API 验收测试。 我熟悉那里的单元测试,并且在运行该类的所有测试之前,我在这些类中使用了 setUp 方法来实现所需的所有逻辑。 但是我没有找到类似的验收测
我是测试自动化领域的新手,如果这是一个愚蠢的问题,请原谅我,但谷歌这次让我失望了。或者至少我读过的任何东西都让我更加困惑。 我在 Eclipse 中使用 JUnit 4 和 Selenium Webd
我可以在没有 @BeforeSuite 注解的情况下运行多个 Chrome 浏览器 session ,但有时我需要分配一些变量或在 @BeforeSuite 中执行某些操作在进入 @BeforeCla
我有一个单元测试在当前格式下运行良好。我的单元测试如下所示: import org.springframework.beans.factory.annotation.Autowired; import
我是一名优秀的程序员,十分优秀!