我正在将 Spring Boot 项目与 IntelliJ IDEA 的最新版本(2018.2.1 Ultimate Edition)一起使用。
当我使用覆盖率运行所有测试时,覆盖率窗口不会显示,并且除了我的主要类之外没有百分比。
我尝试通过转到 启用覆盖窗口View -> Tool Windows -> Coverage,但覆盖选项卡被禁用(不可单击)。
如果我没记错的话,在我更新 IntelliJ 之前覆盖范围工作正常。这是上个版本的错误吗?
我正在制作一个关于电影的网站,我想在电影和演员(导演、编剧和演员)之间建立关系,有两种可能性可以实现这一点,第一个是创建每个演员的表格:
CREATE TABLE director(id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(50));
CREATE TABLE writer(id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(50));
CREATE TABLE actor(id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(50));
Run Code Online (Sandbox Code Playgroud)
并在每个表和电影表之间建立多对多关系。
第二种可能性是为演员表创建一个带有类型列的表,该列可以引用导演、作家或演员,并在该表和电影表之间建立多对多关系。
CREATE TABLE cast(id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(50), type varchar(10));
Run Code Online (Sandbox Code Playgroud)
注意:对于演员,自动生成表将有一些附加列:character_name、role...
那么对于这种情况哪种可能性更好?
我正在尝试测试以下控制器:
@GetMapping("movies")
public Page<Title> getAllMovies(@PageableDefault(value=2) Pageable pageable){
return this.titleService.getTitleByType("Movie", pageable);
}
Run Code Online (Sandbox Code Playgroud)
这是测试类:
@RunWith(SpringRunner.class)
@WebMvcTest(TitleController.class)
@EnableSpringDataWebSupport
public class TitleControllerTest {
@Autowired
private MockMvc mockMvc;
@MockBean
private TitleService titleService;
// Test controller method - getAllMovies
@Test
public void getAllMovies() throws Exception {
Title title = new Title();
title.setId((short)1);
title.setName("The Godfather");
title.setType("Movie");
List<Title> titles = new ArrayList<>();
titles.add(title);
Page<Title> page = new PageImpl<>(titles);
given(this.titleService.getTitleByType("Movie", PageRequest.of(0,2))).willReturn(page);
mockMvc.perform(MockMvcRequestBuilders.get("/movies"))
.andExpect(status().isOk());
}
}
Run Code Online (Sandbox Code Playgroud)
当我运行测试时它失败并给我以下消息:
java.lang.AssertionError: Status
Expected :200
Actual :500
Run Code Online (Sandbox Code Playgroud)
当我测试网址时,http://localhost:8080/movies它正常工作.