springboot test @Before不执行
时间: 2023-04-08 14:01:58 浏览: 105
这可能是因为您的测试类没有正确地继承JUnit的TestCase类或使用了错误的注解。您可以检查一下您的代码,确保正确地使用了@Before注解,并且测试类正确地继承了TestCase类。如果问题仍然存在,您可以尝试在测试方法上使用@Before注解,而不是在测试类上使用。
相关问题
springboot @BeforeEach
@BeforeEach 是 JUnit 框架中的一个注解,用于在每个测试方法之前执行一些公共的准备工作。
在 Spring Boot 中使用 @BeforeEach 注解时,需要引入 JUnit 和 Spring Boot Test 的依赖。然后,可以在测试类中的方法上添加 @BeforeEach 注解,该方法会在每个测试方法执行之前被调用。
以下是一个示例:
```java
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
@SpringBootTest
public class MyTest {
@BeforeEach
public void setup() {
// 在每个测试方法之前执行的准备工作
// 例如初始化一些测试数据
}
@Test
public void test1() {
// 测试方法1
}
@Test
public void test2() {
// 测试方法2
}
}
```
在上述示例中,每次执行 test1() 和 test2() 方法之前,都会先执行 setup() 方法。
这样可以确保每个测试方法都在相同的环境下运行,从而提高测试的可靠性和一致性。
这是我的全部代码package com.system.controller; import com.alibaba.fastjson.JSONObject; import org.junit.Assert; import org.junit.Test; import org.junit.jupiter.api.BeforeEach; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.http.MediaType; import org.springframework.test.context.junit4.SpringRunner; import org.springframework.test.web.servlet.MockMvc; import org.springframework.test.web.servlet.request.MockMvcRequestBuilders; import org.springframework.test.web.servlet.result.MockMvcResultHandlers; import org.springframework.test.web.servlet.result.MockMvcResultMatchers; import org.springframework.test.web.servlet.setup.MockMvcBuilders; import org.springframework.web.context.WebApplicationContext; @RunWith(SpringRunner.class) @SpringBootTest @AutoConfigureMockMvc public class LoginControllerTest { @Autowired private WebApplicationContext context; private MockMvc mockMvc; @BeforeEach public void setUp() { mockMvc = MockMvcBuilders.webAppContextSetup(context).build(); Assert.assertNotNull("mockMvc 对象未正确初始化", mockMvc); } @Test public void testLogin() throws Exception { JSONObject request = new JSONObject(); request.put("username", "user1"); request.put("password", "123456"); mockMvc.perform(MockMvcRequestBuilders.post("/login") .content(request.toJSONString()) .contentType(MediaType.APPLICATION_JSON) .accept(MediaType.APPLICATION_JSON)) .andExpect(MockMvcResultMatchers.status().isOk()) .andDo(MockMvcResultHandlers.print()); } }
看起来你的代码没有问题,但是你的错误信息是空指针异常。这通常意味着在执行测试时,某些依赖项无法正确加载。请尝试检查您的pom.xml文件是否包含了必需的依赖项,如spring-test和mockito-core等。
另外,您可以尝试使用@Before注解而不是@BeforeEach注解来初始化mockMvc对象。您的代码可能需要进行以下更改:
```
@Before
public void setUp() {
mockMvc = MockMvcBuilders.webAppContextSetup(context).build();
Assert.assertNotNull("mockMvc 对象未正确初始化", mockMvc);
}
```
如果您还在遇到问题,请提供完整的堆栈跟踪信息,以便更好地了解问题的根本原因。
阅读全文