public class Numbers {
public static boolean isOdd(int number) {
return number % 2 != 0;
}
}
여러 값을 테스트할때 사용
@ParameterizedTest
@ValueSource(ints = {1, 3, 5, -3, 15, Integer.MAX_VALUE}) // six numbers
void isOdd_ShouldReturnTrueForOddNumbers(int number) {
assertTrue(Numbers.isOdd(number));
}
package com.qpeterp.wising.api.auth.req
import com.qpeterp.wising.api.core.ValidatorHelper
import org.junit.jupiter.params.ParameterizedTest
import org.junit.jupiter.params.provider.ValueSource
class SignUpReqTest {
private val validationHelper = ValidatorHelper(SignUpReq::class.java)
@ParameterizedTest
@ValueSource(
strings = [
"12", // 2글자
"1234567890123456", // 16글자
"가나다라", // 한글
"가나다라123", // 한글 또는 숫자
"가나다라123ABC" // 한글 또는 숫자 또는 영문
]
)
fun `test valid nickname parameter`(element: String) {
validationHelper.assertNoViolation("nickname", element)
}
@ParameterizedTest
@ValueSource(
strings = [
"1", // 1글자
"12345678901234567", // 17글자
"✅✅" // 한글 또는 숫자가 아닌 문자
]
)
fun `test invalid nickname parameter`(element: String) {
validationHelper.assertHasViolation("nickname", element)
}
@ParameterizedTest
@ValueSource(
strings = [
"abcd1234", // 8글자 이상
"abcdabcd12345678", // 16글자 이하
]
)
fun `test valid username parameter`(element: String) {
validationHelper.assertNoViolation("username", element)
}
@ParameterizedTest
@ValueSource(
strings = [
"a123456", // 8글자 미만
"a1234567890123456", // 16글자 초과
"12345678", // 첫 글자가 영문이 아님
"a123가나다라" // 영문 또는 숫자가 아님
]
)
fun `test invalid username parameter`(element: String) {
validationHelper.assertHasViolation("username", element)
}
@ParameterizedTest
@ValueSource(
strings = [
"abcd123@",
"abCD123!",
"abcdefghij1234567890abcdefghij123456789@" // 40자 이하
]
)
fun `test valid password parameter`(element: String) {
validationHelper.assertNoViolation("password", element)
}
@ParameterizedTest
@ValueSource(
strings = [
"a12@", // 8글자 미만
"a123@!가나다", // 영문, 숫자가 아닌 문자가 포함됨
"abcdefghij1234567890abcdefghij123456789@!" // 40자 초과
]
)
fun `test invalid password parameter`(element: String) {
validationHelper.assertHasViolation("password", element)
}
}
*@NullSource*
JUnit 5.4부터 @NullSource를 사용하여 매개변수화된 테스트 메서드에 단일 null 값을 전달할 수 있습니다 .
@ParameterizedTest
@NullSource
void isBlank_ShouldReturnTrueForNullInputs(String input) {
assertTrue(Strings.isBlank(input));
}
@EmptySource
원시 데이터 유형은 null 값을 허용할 수 없으므로 원시 인수에 @NullSource 를 사용할 수 없습니다 .
매우 유사하게 @EmptySource 주석을 사용하여 빈 값을 전달할 수 있습니다.
@ParameterizedTest
@EmptySource
void isBlank_ShouldReturnTrueForEmptyStrings(String input) {
assertTrue(Strings.isBlank(input));
}
@NullAndEmptySource
@ParameterizedTest
@NullAndEmptySource
void isBlank_ShouldReturnTrueForNullAndEmptyStrings(String input) {
assertTrue(Strings.isBlank(input));
}