안녕하세요. 오늘은 Arrays.asList() 라는 메소드를 사용하다가 발생한 에러에 대해서 공유하고자 합니다. 먼저 List list = Arrays.asList("A", "B", "C"); 다음과 같이 Arrays.asList로 만든 list 객체가 있었고 추가적으로 "D"라는 문자열이 추가될 수 있는 상황이었습니다. 그리하여 list.add("D"); "D" 문자열을 추가해주었더니 다음과 같은 에러가 발생하였습니다. Request processing failed; nested exception is java.lang.UnsupportedOperationException 왜 발생하는지 알아보기 위해서 Arrays의 asList 메소드를 까봤습니다. 메소드 바로 위에 달린 주석을 참조하니 단번에 눈치..
안녕하세요. 오늘은 예외처리한 부분을 테스트하기 위한 JUnit 단위테스트 방법을 포스팅하고자 합니다. 보통 대부분의 회사나 프로젝트에서 특정한 목적으로 제작한 커스텀 Exception 객체들이 있을 것입니다. 그러한 경우, 다른 Exception 처리보다 많은 테스트가 필요하게 될텐데요. 그 방법중 하나를 공유해보고자 합니다. 먼저 CustomException 객체를 만듭니다. 매우 간단히 만들었습니다. public class CustomException extends Exception{ public CustomException(String message) { super(message); } } - Exception 객체를 생성하기 위한 생성자만 구현해놓은 정도입니다. 추후 필요한 생성자들을 오버로딩하..
for 반복문 소스코드 예제 fun forLoop(){ println("[for] 반복문") val items = listOf("apple", "banana", "kiwi") // A for(item in items) { println(item) } // B for(index in 0..(items.size-1)) { println("이건 item at $index is ${items[index]}") } // C for(index in 0 until items.size) { println("이건 item at $index is ${items[index]}") } // D for(index in items.indices) { //indices -> 0..2 println("item at $index is..
이번에는 코틀린의 공식홈페이지에 있는 Getting Started에 정리된 내용을 제가 이해한대로 정리해보았습니다. 코틀린 공식홈페이지 Getting Started 주소는 아래와 같습니다. https://kotlinlang.org/docs/reference/basic-syntax.html Basic Syntax - Kotlin Programming Language kotlinlang.org 일단, 모든 내용을 테스트할 수 있는 main 함수입니다. fun main(){ println(sum(10, 20)) println(sum2(10, 20)) printSum(10, 20) printSumNoUnit(10, 20) println("1과 10중 최댓값은 ${maxOf(1,2)}입니다."); println(..
안녕하세요. 오늘은 코틀린 공부를 하기에 앞서 프로젝트를 생성하는 방법에 대해서 공유하고자 합니다. 일단 저는 IntelliJ Ultimate 버전(유료)을 사용하고 있는데, IntelliJ Community(무료) 버전으로도 생성이 가능한 것을 확인하고 커뮤니티버전의 인텔리제이로 생성하는 방법을 공유합니다. 일단 인텔리제이 커뮤니티가 안깔려 있으신 분들은 설치를 해주시고 바로 프로젝트 생성부터 가보겠습니다. * Kotlin은 JDK/JVM 기반 프로그래밍 언어이기 때문에 자바가 설치되어있어야합니다. 1. Create New Project 클릭 일단 커뮤니티 버전을 실행하고나면 가장 먼저 나오는 화면입니다. 빨간 부분의 버튼을 클릭합니다. 2. 언어 Kotlin 선택, JVM 기반 선택 좌측에 여러가지 ..
안녕하세요. 오늘은 JUnit4 버전을 사용해서 파라미터를 반복해서 테스트할 수 있는 방법에 대해서 포스팅해보고자 합니다. 이전 포스팅에서는 JUnit5의 테스트 반복에 대해서 다뤄봤는데요. JUnit5에서는 기본적으로 @ParameterizedTest 라는 어노테이션을 사용해서 @CsvSource, @ValueSource라는 어노테이션을 이용하여 파라미터를 전달하였습니다. 하지만 JUnit4버전에서는 별도의 의존성을 추가해주셔야 하는데요. 바로 JUnitParams라는 의존성입니다. pom.xml에 JUnitParams의 의존성을 추가해줍니다. pl.pragmatists JUnitParams 1.1.1 test 해당 의존성을 추가하면 테스트 클래스를 생성할 때, @RunWith() 어노테이션의 argu..
안녕하세요. 오늘은 여러가지 파라미터값으로 하나의 단위테스트를 반복적으로 실행하여 하나의 단위테스트라도 여러 파라미터값으로 복합적으로 테스트해볼 수 있는 내용을 포스팅해보고자 합니다. 사전준비 pom.xml에서 어떤 의존성을 사용하실지 헷갈리실 분들을 위해 pom.xml 을 보여드리도록 하겠습니다. 4.0.0 org.springframework.boot spring-boot-starter-parent 2.3.0.RELEASE woo.sunghwan inflean-the-java-test 0.0.1-SNAPSHOT inflean-the-java-test Demo project for Spring Boot 1.8 org.springframework.boot spring-boot-starter org.spri..
대부분 assert 단언문을 사용할 때 @Test public void test_1() { assertTrue(false, "false일 떄 메시지 출력"); } assertTrue( boolean condition, String message); 다음과 같이 assertXXX메소드에 인자 2가지를 전달하게 됩니다. 이 중에서 결과는 true인데 message를 전달할 때, 여러가지 케이스가 복잡하게 존재하는 경우.. 과연 다음 테스트에 걸리는 시간이 얼마나 될까요..? @Test public void test_1() { long start = System.currentTimeMillis(); assertTrue(true, getMessage()); long end = System.currentTimeM..