Mockito를 사용해서 테스트를 할 때 ArgumentMatchers를 사용하면 유연한 검증을 할 수 있다.

 

ArgumentMatchers는 반환 값으로 사용할 수 없고 검증이나 스터빙 외에는 사용할 수 없다.

 

 

특정 값을 확인할 필요가 없는 경우 파라미터 타입에 맞게 anyLong(), anyString() 등을 대입하면 된다.

 

하지만 메서드에 파라미터가 둘 이상인 경우에 일부 파라미터에만 ArgumentMatchers를 사용할 수 없다. 

 

위와 같이 테스트를 실행하면 Invalid use of argument natchers 에러가 뜬다.

 

 

 

이럴 때는 특정 값을 입력하는 파라미터에 eq matcher를 사용해서 "test" 대신 eq("test") 식으로 입력한다.

 

 

 

 

 

 

 

String을 '+' 연산자로 붙이는 경우 계속 해서 새로운 인스턴스가 생겨서 성능 저하 문제로 문자열을 붙여야 되는 경우 StringBuilder, StringBuffer 를 사용하는데 조그만 부분에도 '+' 연산자를 쓰지 않는 것이 좋나 싶어서 찾아보니 '+' 연산자를 사용해도 내부적으로 StringBuilder를 사용한다고 한다.

 

 

다만, 문자열을 한번에 더하는 것이 아니라 계속해서 더하는 경우 '+' 는 StringBuilder 인스턴스를 새로 생성하기 때문에 성능 저하가 생기는 것이 맞다. for문을 돌리거나 계속해서 문자열을 더하는 경우가 아니면 '+' 연산자를 사용!

 

 

 

 

 

[참고]

 

String은 항상 StringBuilder로 변환될까?

JDK 1.5 버전 이후부터, String 의 + 연산은 컴파일시에 StringBuilder 를 사용하도록 자동변환되어 성능 최적화가 이뤄진다고 알려져 있습니다. 그러나 String은 항상 StringBuilder로 변환되지 않습니다. Stri

siyoon210.tistory.com

+ Recent posts