猿问

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

我有一个测试类,将来会测试不同的测试条件,我想让它更有条理并且只适合一个文件。我找到了这个解决方案,但它不适合我,因为我无法将 aSpringRunner.classEnclosed.class组合成一个@RunWith。我不能使用Nitor Creation's Nested Runner- 它带来了同样的问题。

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

UPD:一句话 - 我无法升级到Junit 5.


幕布斯6054654
浏览 303回答 1
1回答

鸿蒙传说

JUnit 4如果您需要坚持使用 JUnit 4,可以使用第三方插件来提供支持。将依赖项添加到您的项目中,并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可以说,一个更具前瞻性的解决方案是升级到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已替换为@ExtendWithin JUnit 5。如果您选择迁移到 JUnit 5,您可能会发现阅读Baeldung 的 JUnit 5 迁移指南很有用。
随时随地看视频慕课网APP

相关分类

Java
我要回答