**given/when/then 패턴**
@DisplayName("로또 번호 범위 테스트")
@Test
void lottoNumberRangeTest() {
// given
final LottoNumberGenerator lottoNumberGenerator = new LottoNumberGenerator();
final int price = 1000;
// when
final List<Integer> lotto = lottoNumberGenerator.generate(price);
// then
assertThat(lotto.stream().allMatch(v -> v >= 1 && v <= 45)).isTrue();
}
@Test
void isAdult_AgeLessThan18_False () {
}
@Test
void withdrawMoney_InvalidAccount_ExceptionThrown () {
}
@Test
void admitStudent_MissingMandatoryFields_FailToAdmit () {
}
@DisplayName("로또 번호 범위 테스트")
@Test
void lottoNumberRangeTest() {
// given
final LottoNumberGenerator lottoNumberGenerator = new LottoNumberGenerator();
final int PRICE = 1000;
final int FIRST_LOTTO_NUMBER = 1; // 표현 수정
final int LAST_LOTTO_NUMBER = 45; // 표현 수정
// when
final List<Integer> lotto = lottoNumberGenerator.generate(PRICE);
// then
assertThat(lotto.stream().allMatch(v -> v >= FIRST_LOTTO_NUMBER && v <= LAST_LOTTO_NUMBER )).isTrue();
}
@DisplayName("로또 당첨 확률 테스트")
@Test
void lottoNumberZeroPercentTest() {
// given
final LottoNumberGenerator lottoNumberGenerator = new LottoNumberGenerator();
final int PRICE = 1000;
final int FIRST_LOTTO_NUMBER = 1; // 표현 수정
final int LAST_LOTTO_NUMBER = 45; // 표현 수정
final Array MYNUMBER = [1,3,4,5,6];
int rate = 0;
// when
final List<Integer> lotto = lottoNumberGenerator.generate(PRICE);
// then
MYNUMBER.forEach((number) => {
if (lotto.contains(number)) {
rate *= 20
}
})
assertEquals(rate , 0);
}
@DisplayName("로또 당첨 확률 테스트")
@Test
void lottoNumberZeroPercentTest() {
// given
final LottoNumberGenerator lottoNumberGenerator = new LottoNumberGenerator();
final int PRICE = 1000;
final int FIRST_LOTTO_NUMBER = 1; // 표현 수정
final int LAST_LOTTO_NUMBER = 45; // 표현 수정
final Array MYNUMBER = [1,3,4,5,6];
// when
final List<Integer> lotto = lottoNumberGenerator.generate(PRICE);
// then
assertEquals(lotto.myZeroPercentage(MYNUMBER), 0);
}
@DisplayName("로또 번호 범위 테스트")
@Test
void lottoNumberRangeTest() {
// given
final LottoNumberGenerator lottoNumberGenerator = new LottoNumberGenerator();
final int PRICE = 1000;
final int FIRST_LOTTO_NUMBER = 1;
final int LAST_LOTTO_NUMBER = 45;
final int UNDERFLOWED_FIRST_LOTTO_NUMBER = -1;
final int OVERFLOWED_LAST_LOTTO_NUMBER = 46;
// when
final List<Integer> lotto = lottoNumberGenerator.generate(PRICE);
// then
assertThat(lotto.stream().allMatch(v -> v >= FIRST_LOTTO_NUMBER && v <= LAST_LOTTO_NUMBER )).isTrue();
assertThat(lotto.stream().allMatch(v -> v >= FIRST_LOTTO_NUMBER && v <= OVERFLOWED_LAST_LOTTO_NUMBER )).isFalse();
assertThat(lotto.stream().allMatch(v -> v >= UNDERFLOWED_FIRST_LOTTO_NUMBER && v <= OVERFLOWED_LAST_LOTTO_NUMBER )).isFalse();
assertThat(lotto.stream().allMatch(v -> v >= UNDERFLOWED_FIRST_LOTTO_NUMBER && v <= OVERFLOWED_LAST_LOTTO_NUMBER )).isFalse();
}
@DisplayName("로또 번호 범위 통과 테스트")
@Test
void lottoNumberRangeSuccessTest() {
// given
final LottoNumberGenerator lottoNumberGenerator = new LottoNumberGenerator();
final int PRICE = 1000;
final int FIRST_LOTTO_NUMBER = 1;
final int LAST_LOTTO_NUMBER = 45;
// when
final List<Integer> lotto = lottoNumberGenerator.generate(PRICE);
// then
assertThat(lotto.stream().allMatch(v -> v >= FIRST_LOTTO_NUMBER && v <= LAST_LOTTO_NUMBER )).isTrue();
}
@DisplayName("로또 번호 범위 뒷번호 초과 테스트")
@Test
void lottoNumberRangeOverflowFailTest() {
// given
final LottoNumberGenerator lottoNumberGenerator = new LottoNumberGenerator();
final int PRICE = 1000;
final int FIRST_LOTTO_NUMBER = 1;
final int OVERFLOWED_LAST_LOTTO_NUMBER = 46;
// when
final List<Integer> lotto = lottoNumberGenerator.generate(PRICE);
// then
assertThat(lotto.stream().allMatch(v -> v >= FIRST_LOTTO_NUMBER && v <= OVERFLOWED_LAST_LOTTO_NUMBER )).isFalse();
}
@DisplayName("로또 번호 범위 앞번호 초과 테스트")
@Test
void lottoNumberRangeUnderflowFailTest() {
// given
final LottoNumberGenerator lottoNumberGenerator = new LottoNumberGenerator();
final int PRICE = 1000;
final int UNDERFLOWED_FIRST_LOTTO_NUMBER = -1;
final int LAST_LOTTO_NUMBER = 45;
// when
final List<Integer> lotto = lottoNumberGenerator.generate(PRICE);
// then
assertThat(lotto.stream().allMatch(v -> v >= UNDERFLOWED_FIRST_LOTTO_NUMBER && v <= LAST_LOTTO_NUMBER )).isFalse();
}
참고
https://workshop.infograb.io/gitlab-ci/23add_test_stage_ci_pipeline/4_gitlab_ci-optimization/