gpt4 book ai didi

java - 为什么在执行子类测试方法时我的@BeforeClass 方法不运行?

转载 作者:行者123 更新时间:2023-11-30 07:42:31 25 4
gpt4 key购买 nike

我正在使用 IntelliJ IDEA CE 2018.3 和 JUnit 4.12。

我有一个看起来像这样的测试类:

@RunWith(HierarchicalContextRunner.class)
public class TestClass {
@BeforeClass
public static void beforeAll() {
//start a server for all tests to hit
}

@Before
public void before() {
//init a common request object for each test
}

@Test
public void itShouldHaveSomeCommonProperty() {
//check some common thing
}

public class SomeSubTestClass {
@Before
public void before() {
//do some test case-specific setup
}

public class SomeOtherSubTestClass {
@Test
public void itShouldDoSomething() {
//hit the service and assert something about the result
}
}
}
}

当我告诉 IntelliJ 运行该类时,一切都按预期进行。但是,如果我只想运行 itShouldDoSomething 测试(我通过设置一个针对 SomeOtherSubTestClass 类的运行配置来实现),beforeAll 方法未执行。两个 before 方法都以正确的顺序执行,但静态 beforeAll 方法不是。

我是不是误会了什么,或者这是一个错误?

最佳答案

这不是错误。

beforeAll 方法是静态的,因此绑定(bind)到类而不是实例。这就是为什么在内部类或子类中调用测试时不执行的原因。

为了确保它被调用,您必须在每个内部类中定义一个 @BeforeClass 方法,然后在外部类上调用该方法。

关于java - 为什么在执行子类测试方法时我的@BeforeClass 方法不运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54562540/

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