Anna belly belly hard/java_spring

P1_C3_2. 테스트 코드- 비밀번호 유효성 검증기 만들기

bibiana 각선행 2023. 5. 13. 00:30
반응형

* 요구사항

• 비밀번호는 최소 8자 이상 12자 이하여야 한다.
• 비밀번호가 8자 미만 또는 12자 초과인 경우 IllegalArgumentException 예외를 발생시킨다.
• 경계조건에 대해 테스트 코드를 작성해야 한다.

 

1. 셋팅

2.  assertj, junit 의존성 추가

• https://assertj.github.io/doc/#assertj-core-assertions-guide

 

AssertJ - fluent assertions java library

Thanks to all the contributors of this release: Erhard Pointl, Stefano Cordio, BJ Hargrave, Jeremy Landis, Ashley Scopes, Roland Weisleder , Benedikt Bogason , Andreas Kutschera , Matthew , Chris HeZean , Leo0506 , Zhou Yicheng , Saria , Chunhao Liao , max

assertj.github.io

    // junit5 기본적으로 설치된다고 하는데 그렇지 않았다..
    testImplementation('org.jnunit.jupiter:junit-jupiter-api:5.8.1')
    testImplementation('org.junit.jupiter:junit-jupiter-engine:5.8.1')
    // assertj 의존성 추가
    testImplementation 'org.assertj:assertj-core:3.23.1'

 

 

3. class 추가

4. 테스트 코드 추가

커맨드 + n

커맨드 + N 누르면.. 그냥 된다.... 선생이 가르칠땐 test method 에 junit이 있던데... 어쨋든...

F2 버튼을 누르면 빨간색으로 이동

Alt + enter

import static method 클릭!

실행 시키면 에러

passwordvalidator 가 없기 때문에! 에러!

validate 클래스 추가

 

test !

test2!

t

 

잘 통과한것을 확인하여 리팩토링 시행!!

 

* 지역변수로 만들어 주기

comand + alt + v

 

그후 테스트 코드 통과함! = 리팩토링 잘됫따!

즉, 테스트 코드가 있기에 마음껏 리팩토링 할수 있다.

 

* 상수로 만들어주기

command + alt(option?) + c 

리팩토링 실시 -> 테스트코드 ok -> 리팩토링 성공!

리팩토링시 안정성 확보 !

 

계속.......

 

의존성 추가

https://www.petrikainulainen.net/programming/testing/junit-5-tutorial-writing-parameterized-tests/

 

JUnit 5 Tutorial: Writing Parameterized Tests

JUnit 5 Tutorial: Writing Parameterized Tests Author: Petri Kainulainen Published: December 19, 2021 If you want to get access to up-to-date material which is essentially a better version of my JUnit 5 tutorial, you should take a look at my upcoming Introd

www.petrikainulainen.net

공부를 할것...

 

 

 

 

의존성 추가

 

클래스 추가 RandomPasswordGenerator.java

클래스 추가 : user

 

테스트 코드 !

 

getter 추가

테스트 코드 돌릴시 비밀번호가 랜덤으로 만들어 지기 때문에 성공할수도 실패할수도 있다.

이는 패스워드를 몇글자로 만들지 컨트롤 할수가 없어서 이기때문에

이를 위해 인터페이스 passwordGenerator 를 만든다.

 

테스트 항상 성공 함!!

강결합 -> 결합을 느슨하게 만듬

 

소스코드 : https://github.com/bibiana1202/oop_practice_m1

 

GitHub - bibiana1202/oop_practice_m1: https://organize1202.tistory.com/10

https://organize1202.tistory.com/10. Contribute to bibiana1202/oop_practice_m1 development by creating an account on GitHub.

github.com

 

반응형