import org.junit.jupiter.api.Test和import org.junit.Test的区别
时间: 2023-09-28 20:09:14 浏览: 169
两个import语句的作用是引入不同版本的JUnit测试框架。其中,org.junit.jupiter.api.Test是JUnit 5版本中的注释,而org.junit.Test是JUnit 4版本中的注释。具体来说,JUnit 5版本引入了许多新功能,因此JUnit 5版本的org.junit.jupiter.api.Test注释具有更多的功能和更好的灵活性。因此,如果您从JUnit 5开始编写新的测试用例,最好使用org.junit.jupiter.api.Test注释。如果您有许多旧测试用例,在这种情况下,您可以继续使用org.junit.Test注释。
相关问题
这是我的全部代码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);
}
```
如果您还在遇到问题,请提供完整的堆栈跟踪信息,以便更好地了解问题的根本原因。
package com.songhaozhi.mayday; import com.songhaozhi.mayday.model.domain.Category; import com.songhaozhi.mayday.service.CategoryService; import org.junit.Test; import org.junit.jupiter.api.Assertions; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import java.util.List; @SpringBootTest public class TestCategoryService { @Autowired CategoryService Categoryservice; @Test public void testFindCategory() { List<Category> Category = CategoryService.findCategory(); Assertions.assertEquals(5,Category.size()); } } 怎么改
你可以尝试将测试方法名从`testFindCategory()`改为更具描述性的名称,例如`testFindAllCategories()`。此外,还可以将`CategoryService`的变量名改为小驼峰命名法,即`categoryService`。修改后的代码如下所示:
```java
package com.songhaozhi.mayday;
import com.songhaozhi.mayday.model.domain.Category;
import com.songhaozhi.mayday.service.CategoryService;
import org.junit.Test;
import org.junit.jupiter.api.Assertions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import java.util.List;
@SpringBootTest
public class TestCategoryService {
@Autowired
CategoryService categoryService;
@Test
public void testFindAllCategories() {
List<Category> categories = categoryService.findCategory();
Assertions.assertEquals(5, categories.size());
}
}
```
这样修改后的代码更符合Java的命名规范,更易读和维护。
阅读全文