- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我在我的集成测试中使用 cucumber-jvm
,我需要在所有场景完成后执行一些代码,只需执行一次。
仔细阅读了一些帖子,例如 this并审查了这份报告issue ,我已经完成了它做这样的事情:
public class ContextSteps {
private static boolean initialized = false;
@cucumber.api.java.Before
public void setUp() throws Exception {
if (!initialized) {
// Init context. Run just once before first scenario starts
Runtime.getRuntime().addShutdownHook(new Thread() {
@Override
public void run() {
// End context. Run just once after all scenarios are finished
}
});
initialized = true;
}
}
}
我认为以这种方式完成的上下文初始化(相当于BeforeAll
)是可以的。然而,尽管它有效,但我完全不确定使用 Runtime.getRuntime().addShutdownHook()
的 AfterAll
模拟是否是一个好的做法。
所以,这些是我的问题:
Runtime.getRuntime().addShutdownHook()
来实现 AfterAll
?AfterAll
行为?在此先感谢您的帮助。
最佳答案
可能更好的方法是使用构建工具,例如 Ant、Maven 或 Gradle 来进行设置和拆卸操作,这是集成测试的一部分。
使用 Maven Fail Safe Plug-in 时,用于设置集成测试。阶段 pre-integration-test
,通常用于设置数据库和启动 web 容器。然后运行集成测试(阶段 integration-test
)。然后运行 post-integration-test
阶段,用于关闭和关闭/删除/清理东西。
INFO如果 Cucumber 测试是通过 JUnit 运行的,以下内容也可能值得考虑
如果设置更简单、更小,您可以查看 JUnit @BeforeClass 和 @AfterClass。或者实现一个 JUnit @ClassRule,它有自己的 before()
和 after()
方法。
@ClassRule
public static ExternalResource resource = new ExternalResource() {
@Override
protected void before() throws Throwable {
myServer.connect();
}
@Override
protected void after() {
myServer.disconnect();
}
};
关于java - AfterAll 全局钩子(Hook) cucumber-jvm,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31563261/
TLDR;在混合了 BeforeAndAfterAll 的 ScalaTest 规范中和 ParallelTestExecution , afterAll()在每次测试后都被调用,然后在所有测试之后再
我正在使用 Jasmine 2.3.1。以下规范执行导致 afterAll 方法未被调用: var http = require('http'); describe("simple server te
在我的 ScalaTest 套件结束时,我需要进行一些数据库清理。清理本身就是一个Future。该套件不会调用 super.afterAll(),这会使套件使用的一些资源(例如 Web 浏览器和数据库
如果我运行下面的 SubClass 单元,我希望 @AfterAll 在测试之后执行。然而,输出就是这样: init in super class init in sub class test OK
@BeforeAll 和 @AfterAll 必须是静态的。所以我不能使用JdbcTemplate。我该如何清空数据库? 我现在已经使用@PostConstruct 在方法中初始化了数据。但我找不到工
我正在测试一个使用 cloudant 的 Web 应用程序。我在 beforeAll() 中设置了一个测试数据库,并想在 afterAll() 中的所有测试后将其删除。 之前的代码被执行,并且我创建了
我在我的集成测试中使用 cucumber-jvm,我需要在所有场景完成后执行一些代码,只需执行一次。 仔细阅读了一些帖子,例如 this并审查了这份报告issue ,我已经完成了它做这样的事情:
我正在尝试使用 jasmine 的 beforeAll 和 afterAll 方法,用 frisby.js 创建一套测试,因为实际上,frisby 不支持这种方法。所以,这就是我想要做的: var f
我想在所有测试之前做点什么,然后再做?组织代码的最佳方式是什么?例如:备份一些变量 -> 清除它们 -> 测试一些东西 -> 恢复备份。 'beforeEach' 和 'afterEach' 太贵了。
之前和之后的方法在 JUnitPlatform 中不起作用。 代码如下。 import org.junit.jupiter.api.AfterAll; import org.junit.jupiter
我想在功能文件之前执行以下一些操作。 public void beforeFeature() { File path = new File("D:\\AccelareWorkFitComple
我有一个测试类,里面有多个嵌套测试类。外部测试类使用实现 BeforeAllCallback 和 AfterAllCallback 的扩展。当执行外部测试类时,每个嵌套类都会调用这些接口(interf
我有多个 JUnit 测试类要运行,每个测试类中都有多个测试。我有一个基本测试类,它是所有测试类的父类。有没有办法在基测试类中编写在 @BeforeAll 之前和 @AfterAll 之后对所有测试类
有一些文件我正在重复这种模式: beforeAll(() => { MockDate.set(1487076708000) }) afterAll(() => { MockDat
我已在单独的文件 bootstrap.js 中定义了 beforAll 和 afterAll,但我无法进行集成测试。我正在使用无服务器堆栈。我从 github 获得了帮助,但该示例是用 mocha 编
我们正在构建一个 Angular 单页面应用程序。过去几周的一些提交导致 AfterAll 方法中出现随机测试失败,并显示以下错误消息: AfterAll Uncaught TypeError: Yo
我正在尝试使用 Jest 为我的 Express 服务器编写集成测试。由于 Jest 并行运行测试(并且我想避免使用 --runInBand 依次运行测试),我正在使用 get-port用于查找随机可
在运行我的单元测试时,有时,即使它们通过了,在所有测试运行结束时,我也会收到以下错误。 在运行 PhantomJS 的 Jenkins CI 构建中: .PhantomJS 2.1.1 (Linux
当我在我的 Angular 项目中运行 ng test 命令时出现错误,它给出了这样的错误 10% building modules 1/1 modules 0 active04 12 2018 11
当我进行 Angular 4 单元测试时,其中一个使用 google maps 和 agm 包的页面显示错误: An error was thrown in afterAll\n[object Err
我是一名优秀的程序员,十分优秀!