繁体   English   中英

JUnit 使用 PowerMockito 进行参数化和非参数化测试

[英]JUnit parameterized and non-parameterized tests with PowerMockito

所以我试图在同一个测试 class 中运行 JUnit 参数化测试和非参数化测试。 但是我遇到了一个错误或其他错误。 有没有人尝试过这个并且他们成功地这样做了? 我知道其他跑步者需要与@PowerMockRunnerDelegate一起使用才能正确运行。 所以这就是我想出的:

@RunWith(PowerMockRunner.class)
@PowerMockRunnerDelegate(Enclosed.class)
@PrepareForTest(Some.class)
@PowerMockIgnore("javax.management.*")
public class TestClass {

    @PowerMockRunnerDelegate(Parameterized.class)
    public static class ParameterizedTests {

    }

    @Test
    public void nonParameterizedTestOne() {

    }

    @Test
    public void nonParameterizedTestTwo() {

    }

}

但我得到了错误:

Test class should have exactly one public zero-argument constructor

如果没有 powermock,这种情况可以通过以下方式轻松处理:

@RunWith(Enclosed.class)
public class TestClass {

    @RunWith(Parameterized.class)
    public static class ParameterizedTests {

    }

    @Test
    public void nonParameterizedTestOne() {

    }

    @Test
    public void nonParameterizedTestTwo() {

    }

}

但我肯定想使用powermock。 有什么解决办法吗?

我有同样的问题,这对我有用:

@RunWith(PowerMockRunner.class)
@PowerMockRunnerDelegate(Enclosed.class)
@PrepareForTest({Some.class})
public class TestClass {

    private static void setUpOnceForAllTests() {
    }

    private static void setUpForEveryTest() {
    }

    public static class SingleTests {

        // Setup once for all single tests
        @BeforeClass
        public static void setUpBeforeClass() {
            setUpOnceForTests();
        }

        // Setup for each and every single test
        @Before
        public void setUp() {
            setUpForEveryTest();
        }

        @Test
        public void nonParameterizedTestOne() {
        }

        @Test
        public void nonParameterizedTestTwo() {
        }
    }

    @PowerMockRunnerDelegate(Parameterized.class)
    public static class ParameterizedTests {
        
        // Setup once for all parameterized test
        @BeforeClass
        public static void setUpBeforeClass() {
            setUpOnceForTests();
        }

        // Setup for each and every parameterized test
        @Before
        public void setUp() {
            setUpForEveryTest();
        }

        @Parameterized.Parameters
        public static Collection<Enum> param() {
            return new ArrayList<>(Arrays.asList(Enum.values()));
        }

        @Parameterized.Parameter
        public int param;

        @Test
        public void parameterizedTestOne() {
        }

        @Test
        public void parameterizedTestTwo() {
        }
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM