gpt4 book ai didi

junit - 使用 jUnit 4,我可以参数化 @BeforeClass 吗?

转载 作者:行者123 更新时间:2023-12-03 15:02:56 47 4
gpt4 key购买 nike

我正在使用 jUnit 来管理访问数据库的应用程序的集成测试。因为设置测试数据是一项耗时的操作,我一直在 @BeforeClass方法,每个测试类只执行一次(与 @Before 方法相反,每个测试方法运行一次)。

现在我想为数据层的配置尝试一些不同的排列,在每个不同的配置上运行我的所有测试。这似乎是对 Parameterized 的自然使用。测试赛跑者。问题是,Parameterized为类构造函数提供参数,@BeforeClass方法是抽象的,在类构造函数之前调用。

几个问题,

是否 Parameterized调用@BeforeClass每个参数排列的方法,还是只调用一次?

如果 @BeforeClass方法被重复调用,有没有办法从它内部访问参数值?

如果这些都不是,人们建议作为解决这个问题的最佳替代方法是什么?

最佳答案

我认为您将需要一个自定义测试运行器。我遇到了同样的问题(需要使用多个昂贵的配置运行相同的测试)。您需要一种方法来参数化设置,可能使用类似于 Parameterized 运行器使用的 @Parameter 注释,但在静态成员字段而不是实例字段上。自定义运行器必须找到所有带有 @Parameter 注释的静态成员字段,然后对每个静态 @Parameter 字段运行一次测试类(可能使用基本的 BlockJunit4ClassRunner)。 @Parameter 字段应该是@ClassRule。

Andy on Software 在开发自定义测试运行器方面做得很好,他在这些博客文章中解释得非常清楚 herehere .

关于junit - 使用 jUnit 4,我可以参数化 @BeforeClass 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11163890/

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