SpringRunner / JUnit运行/测试私有(非测试)方法

时间:2019-04-18 11:48:36

标签: java spring junit

我们有一个使用JUnit 4作为测试工具(w / SpringRunner)的Spring 5应用程序。我们正在遇到一个问题,该问题正在运行带有<{>}未标记且带有@Test批注的私有帮助器方法作为测试。发生在 IntelliJ和Maven 中。

方法签名为:

private Optional<TestSuiteJsonObject> createTestSuite(String name, TestType type) throws IOException, LicenseException {

测试类本身看起来像:

public class TestSuitesControllerTest extends ControllerTest

两者都没有注释。 ControllerTest看起来像:

@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT, classes = CompanyTestApplication.class)
@AutoConfigureMockMvc
@Ignore
public class ControllerTest {
   ...
}

行为是,这些测试方法与null参数一起运行。我们根本不希望它们运行。此类中的其余方法均用@Test注释适当地标记。

我想知道单词test是否在类/方法名称中的事实是否会导致JUnit将其标识为可运行,但是更改类和方法的名称没有效果。

@Ignore添加到私有方法也无效!

我们在做什么错?我们是否进入了一个替代维度,即测试线束实际上正在测试工程师的应力响应?

enter image description here

1 个答案:

答案 0 :(得分:1)

这是一个愚蠢的错误,但我将其留给任何发现自己处于相同情况的未来人。

我有两个方法,具有相同的名称。测试方法:

@Test
@WithMockUser(username = "admin", roles = "ADMIN")
public void createSuite() throws Exception { ... }

和辅助方法:

private static Optional<TestSuiteJsonObject> createSuite(String name, TestType type) { ... }

我们以某种方式掩饰了这一点。 ‍♂️