如何将@beforeach方法与特定的@test方法链接(java、junit)

vecaoik1  于 2021-06-29  发布在  Java
关注(0)|答案(2)|浏览(394)

例如,我们有两个类:basetest和test。测试扩展basetest。 BaseTest.class 包含2个方法 @BeforeEach 注解。

@BeforeEach
  void setUp1() {}

@BeforeEach
  void setUp2() {}
``` `Test.class` 包含2个方法 `@Test` 注解。

@Test
void test1() {}

@Test
void test2() {}

有没有办法把 `@BeforeEach` 方法 `@Test` 方法,所以 `setup1()` 只会在 `test1()` 以及 `setup2()` 只会在 `test2()` ?
xe55xuns

xe55xuns1#

一个明显的答案是:不要那样做!
单元测试的目的是帮助您快速识别生产代码中的中断。因此一个基本原则是:保持一个非常简单的结构。
一个好的单元测试的一个方面是:你看看测试方法,你就知道发生了什么。如果有的话,你必须滚动到一些 setUp() 方法(同一文件!)看看发生了什么。
您要做的是,未来的读者不仅必须了解基类,还必须了解每个测试方法使用不同机制的复杂逻辑。
因此,是的,避免代码重复对单元测试也很重要。但是,您可以通过应用用于生产代码的相同模式来避免“到达目标”。

3lxsmp7m

3lxsmp7m2#

你不能真正做到这一点,但是你可以将测试用例与 @Nested 班级。

public class Test {

    @BeforeEach
    void setUpForAll() {}

    @Nested
    class TestCasesWithPrecondition1{

        @BeforeEach
        void setUp1() {}

        @Test
        void test1() {}
    }

    @Nested
    class TestCasesWithPrecondition2{

        @BeforeEach
        void setUp2() {}

        @Test
        void test2() {}
    }
}

相关问题