gpt4 book ai didi

java - 如果使用Spring和Junit 4,如何编写内部测试类?或者我还能如何构建我的测试?

转载 作者:行者123 更新时间:2023-11-30 01:47:55 26 4
gpt4 key购买 nike

我有一个测试类,将来将测试不同的测试条件,我希望使其更加结构化并且仅适合一个文件。我发现this解决方案,但它不适合我,因为我无法将 SpringRunner.classEnlined.class 组合起来以将其放入一个 @RunWith 。我无法使用 Nitor Creation 的 Nested Runner - 它带来了同样的问题。

我使用 Spring 5Junit 4.12。嗯...我的问题是,如何将几个内部/嵌套类中的测试与一个根类结合起来?

UPD:一则评论 - 我无法升级到 Junit 5

最佳答案

JUnit 4

如果您需要坚持使用 JUnit 4,您可以使用第三方插件来提供支持。请参阅junit-hierarchicalcontextrunner由 GitHub 上的 bechte 提供。

将依赖项添加到您的项目中,然后使用 HeirachalContextRunner,如下所示:

@RunWith(HierarchicalContextRunner.class)
public class NestedTest {

@ClassRule
public static final SpringClassRule SPRING_CLASS_RULE = new SpringClassRule();

@Rule
public final SpringMethodRule springMethodRule = new SpringMethodRule();

@Before
public void setup() {
// General test-suite setup
}

public class NestedClass {

@Test
public void testSomething() {
// Test
}

public class AnotherNestedClass {

@Test
public void testSomethingElse() {
// Test
}
}
}
}

请注意,我们不需要在这里指定 Spring 的运行程序。相反,我们使用这些规则来应用 Spring 测试框架,该框架自 Spring 4.2 起可用。

JUnit 5

可以说,更面向 future 的解决方案是升级到 JUnit 5。然后,您可以使用 @Nested 注释直接构建开箱即用的测试用例。见下文:

@SpringBootTest
@ExtendWith(SpringExtension.class)
class MyNestedTest {

@BeforeAll
void setup() {
// General test-suite setup
}

@Nested
@DisplayName("parentTestSuite")
class NestedClass {

@Test
void testSomething() {
// Test
}

@Nested
@DisplayName("childTestSuite")
class AnotherNestedClass {

@Test
void testSomethingElse() {
// Test
}

}
}
}

请注意,@RunWith 已在 JUnit 5 中替换为 @ExtendWith。如果您选择迁移到 JUnit 5,您可能会发现阅读 Baeldung's guide on JUnit 5 migration 很有用。 .

关于java - 如果使用Spring和Junit 4,如何编写内部测试类?或者我还能如何构建我的测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57251147/

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