Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- dp
- 이분 탐색
- spring cloud
- 주울
- 서비스 디스커버리
- Logback
- 유레카
- 도커
- 플로이드 와샬
- 게이트웨이
- 달팽이
- 메모이제이션
- 백트래킹
- 스택
- 구간 트리
- spring boot
- 구현
- 비트마스킹
- 완전 탐색
- Zuul
- 스프링 시큐리티
- Spring Cloud Config
- Java
- ZuulFilter
- BFS
- 다익스트라
- Gradle
- 이분 매칭
- docker-compose
- 트리
Archives
- Today
- Total
Hello, Freakin world!
단위 테스트의 작성 그리고 완성! 본문
단위 테스트
...
import static org.assertj.core.api.Assertions.assertThat;
public class TestChatRoomController {
ChatRoomController controller;
DummyRequestHandler requestHandler;
@Before
public void init() {
controller = new ChatRoomController();
requestHandler = new DummyRequestHandler();
}
@Test
public void testInvoke_bracedUrlMethod() throws NoSuchMethodException, InvocationTargetException, IllegalAccessException {
java.lang.reflect.Method method = getMethod(DummyRequestHandler.class, "bracedURLMethod");
Response response = controller.invoke(requestHandler,
method,
new Request(Method.POST, "/hello/2/cws"));
assertThat(response).isEqualToComparingFieldByField(new Response(200));
}
@Test
public void testInvoke_whenPlainURLMethod() {
java.lang.reflect.Method method =
getMethod(DummyRequestHandler.class, "plainURLMethod");
Response actual = controller.invoke(requestHandler,
method,
new Request(Method.GET, "/hello"));
assertThat(actual).isEqualToComparingFieldByField(new Response(200));
}
@Test
public void testInvoke_whenHybridURLMethod() {
java.lang.reflect.Method method =
getMethod(DummyRequestHandler.class, "hybridURLMethod");
Response actual = controller.invoke(requestHandler,
method,
new Request(Method.GET, "/hello/23/name"));
assertThat(actual).isEqualToComparingFieldByField(new Response(200));
}
@Test
public void testInvoke_whenNoArgumentMethod() {
java.lang.reflect.Method method =
getMethod(DummyRequestHandler.class, "noArgumentMethod");
Response actual = controller.invoke(requestHandler,
method,
new Request(Method.GET, "/hello"));
assertThat(actual).isEqualToComparingFieldByField(new Response(200));
}
private java.lang.reflect.Method getMethod(Class clazz, String methodName) {
return Arrays.stream(clazz.getMethods())
.filter(m -> m.getName().equals(methodName))
.findFirst().get();
}
}
테스트 데이터를 위한 DummyRequestHandler
public class DummyRequestHandler {
@RequestMapping(method = Method.POST, url = "/hello/{id}/{name}")
public Response bracedURLMethod(long id, Request request, String name) {
return new Response(200);
}
@RequestMapping(method = Method.GET, url = "/hello")
public Response plainURLMethod(Request request) {
return new Response(200);
}
@RequestMapping(method = Method.GET, url = "/hello/{id}/name")
public Response hybridURLMethod(int id, Request request) {
return new Response(200);
}
@RequestMapping(method = Method.GET, url = "/hello")
public Response noArgumentMethod() {
return new Response(200);
}
}
전체 코드를 살펴보고 싶다면...
https://github.com/johnna-endure/chatroom-server
'Toy Project > URL Mapping 프레임워크 구현하기' 카테고리의 다른 글
기능 추가 - URL에 포함된 정보를 자동으로 메서드 인수에 바인딩하기 (0) | 2020.04.01 |
---|---|
dispatch 기능 구현하기 (0) | 2020.04.01 |
Spring @RequestMapping과 같은 URL 매핑 프레임워크 구현하기 (0) | 2020.03.31 |
Comments