Error "TestEngine with ID 'junit-vintage' failed to discover tests" with Spring Boot 2.2
spring-boot-starter-test
에 의존하면서 JUnit4
를 사용하지 않을 때 발생하는 에러라고 한다.spring-boot-starter-test
는 junit-vintage-engine
에 의존하는게 JUnit5
에는 그게 아마 없는 듯 하다.build.gradle
에 junit-vintage-engine
관련 의존성을 추가// spring-boot-starter-test 코드 아래 삽입
testImplementation('org.springframework.boot:spring-boot-starter-test:2.2.2.RELEASE') {
exclude group: 'junit'
exclude group: 'org.junit.vintage', module: 'junit-vintage-engine'
}
testImplementation('org.junit.jupiter:junit-jupiter-api:5.5.2')
testImplementation('org.junit.jupiter:junit-jupiter-engine:5.5.2')
testImplementation('org.junit.jupiter:junit-jupiter-params:5.5.2')
메인화면부터 유저 목록을 보여주기 위해 더미 데이터를 미리 넣어놓을 필요성을 느꼈다. 추후 더미데이터를 없앨 때 한 줄 주석으로 처리할 수 있도록 별도 메소드로 분리했다.
private String[] names = {"224", "사장", "팝도"};
private String[] contents = {"게시물1", "게시물2", "게시물3"};
// User 더미데이터 삽입
private void setUsers(UserService userService, String[] names) {
List<User> result = userService.findUsers();
if(result.size()==0) {
for (String name : names) {
User user = new User();
user.setName(name);
userService.join(user);
}
}
}
// Post 더미데이터 삽입
private void setPosts(PostService postService, String[] contents, Long userId) {
List<Post> result = postService.findPosts(userId);
if(result.size()==0) {
for (String content : contents) {
Post post = new Post();
post.setHomeId(userId);
post.setContent("게시물1");
post.setAuthorId(userId);
postService.createPost(post);
}
}
}
@GetMapping("/")
public String homeList(Model model) {
// 더미 데이터 삽입
setUsers(userService, names);
setPosts(postService, contents, 1L);
setPosts(postService, contents, 2L);
setPosts(postService, contents, 3L);
List<User> result = userService.findUsers();
model.addAttribute("resultList", result);
return "homes/homeList";
}
org.thymeleaf.exceptions.TemplateProcessingException: Could not parse as expression:
th:text
안에서 "${변수}텍스트"
이렇게 변수와 텍스트를 함께 적어서 생긴 에러|
기호 추가해야 함 : "|${변수}텍스트|"
<a href="" />
내부 작성"@{}"
이렇게 @ 기호를 붙이고 시작한다.th:each="item : ${items}"
형식 사용<li th:each="user : ${resultList}">
<a th:href="@{/homes/selectHome?homeId={id}(id=${user.id})}" th:text="|${user.name}의 집|">user1의 집</a>
</li>
<!-- 수정일자 없으면 생성일, 있으면 수정일 표시 -->
<td th:if="${post.updatedAt==null}" th:text="${post.createdAt}"></td>
<td th:unless="${post.updatedAt==null}" th:text="${post.updatedAt}"></td>