π₯¨ ν μ€νΈκ° μ΄λ €μ΄ μ½λ
κ°λ°μ μ§ννλ€λ³΄λ©΄, ν μ€νΈνκΈ° μ΄λ €μ΄ μ½λλ€μ λ§λκ² λλ€. ν μ€νΈνκΈ° μ΄λ €μ΄ μ½λλ€μ λ€μκ³Ό κ°λ€.
1. νλ μ½λ©λ κ²½λ‘
2. μμ‘΄ κ°μ²΄λ₯Ό μ§μ μμ±
3. μ μ λ©μλ μ¬μ©
4. μ€ν μμ μ λ°λΌ λ¬λΌμ§λ κ²°κ³Ό
5. μν μ΄ μμ¬ μλ μ½λ
6. κ·Έ μΈ ν μ€νΈκ° μ΄λ €μ΄ μ½λ
π νλ μ½λ©λ κ²½λ‘
νλ μ½λ©λ κ²½λ‘λΌν¨μ λ€μκ³Ό κ°μ΄ μ½λ©λμ΄ μλ κ²μ λ»νλ€.
Path path = Paths.get("D:\\data\\pay\\cp0001.csv");
λ€μκ³Ό κ°μ΄ λμ΄ μλ μ½λλ₯Ό ν μ€νΈ νλ €λ©΄ ν΄λΉ κ²½λ‘μ νμΌμ΄ λ°λμ μμΉν΄ μμ΄μΌ νλ€. νμ§λ§, μλμ°μ λ€μκ³Ό κ°μ λλΌμ΄λΈκ° μκ±°λ μλμ° μ μ© νμΌ κ²½λ‘μ΄κΈ° λλ¬Έμ λ§₯ OS, 리λ μ€μμλ νμΌμ μ΄ μ μμ΄ λ€λ₯Έ OSλ₯Ό κ°κ³ μλ κ°λ°μ λν ν μ€νΈλ₯Ό ν μ μλ€.
νλ μ½λ©λ κ²½λ‘ λΏλ§ μλλΌ νλ μ½λ© λ IP μ£Όμ, ν¬νΈ λ²νΈ λν ν μ€νΈλ₯Ό μ΄λ ΅κ² νλ€.
π μμ‘΄ κ°μ²΄λ₯Ό μ§μ μμ±
λν μμ‘΄ λμμ μ§μ μμ±νλ κ² λν ν μ€νΈλ₯Ό νκΈ° μ΄λ €μ΄ 쑰건μΌλ‘ λ§λ€κ³ μλ κ²μ΄λ€.
public class PaySync{
// μμ‘΄ λμμ μ§μ μμ±
private PayInfoDao payinfoDao = new PayInfoDao();
public void sync() throws IOException{
// μλ΅
payInfos.forEach(pi -> payInfoDao.insert(pi));
}
}
μ½λλ₯Ό ν μ€νΈνκΈ° μν΄μλ μ μ₯λ λ°μ΄ν°λ₯Ό μμ ν΄μΌ νλλ° λ€μκ³Ό κ°μ΄ μ½λλ₯Ό μμ±νκ² λλ©΄ λ°μ΄ν°κ° μ€λ³΅μ΄ λ°μνμ¬ ν μ€νΈμ μ€ν¨νκ² λλ€. λ€ κ°μ΄ μ¬μ©νμ§ μκ³ , ν λ² μμ±νκ³ μ§μμΌ νλ κ°μ²΄λ€μ ν μ€νΈ μ½λ μλμ μμ±νλ κ²μ΄ μ’λ€.
π μ μ λ©μλ μ¬μ©
μ μ λ©μλλ₯Ό μ¬μ©νλ©΄ ν μ€νΈλ₯Ό νκΈ° μ΄λ €μμ§λ€.
boolean authorized = AuthUtil.authorize(authkey);
resp = AuthUtil.authenticate(id, pw);
μ μ½λλ AuthUtil ν΄λμ€μ μ μ λ©μλλ₯Ό μ¬μ©νκ³ μλ€. AuthUtil ν΄λμ€κ° μΈμ¦ μλ²μ ν΅μ νλ κ²½μ° μ μ½λλ₯Ό ν μ€νΈ νλ €λ©΄ λμνκ³ μλ μΈμ¦ μλ²κ° νμνλ€. λ°λΌμ ν΄λμ€κ° ν΅μ ν μΈμ¦ μλ² μ 보λ₯Ό μμ€ν νλ‘νΌν°μμ κ°μ Έμ¨λ€λ©΄ μμ€ν νλ‘νΌν°λ ν μ€νΈ νκ²½μ λ§κ² μ€μ ν΄μΌνλ©°, μΈμ¦ μλ²μ μ μ₯λμ΄ μλ μ μν μμ΄λμ μνΈλ₯Ό μ¬μ©ν΄μΌ νλ€.
π μ€ν μμ μ λ°λΌ λ¬λΌμ§λ μ½λ
LocalDate now = LocalDate.now();
λ€μκ³Ό κ°μ μ½λκ° μμ λ, ν μ€νΈ μ½λλ₯Ό μμ±νλ©΄ μκ°μ λ°λΌ ν μ€νΈμ κ²°κ³Όκ° λ¬λΌμ§λ―λ‘ ν μ€νΈλ₯Ό λ―Ώμ μ μκ² λλ€. μ΄μ κ°μ΄ Randomμ κ²½μ°μλ, μμ±νλ κ²°κ³Ό κ°μ΄ λλ€μΌλ‘ λμ€κ² λλ―λ‘ LocalDateμ κ°μ΄ λ―Ώμ μ μλ μν©μ΄ λ°μν μ μλ€.
π μν μ΄ μμ¬ μλ μ½λ
ν¬μΈνΈ κ³μ°μ λ‘μ§μ ν μ€νΈνκΈ° μν μ½λμμλ λ‘μ§λ§ κ°μ§κ³ ν μ€νΈλ₯Ό μ§νν μ μλ€. ν μ€νΈλ₯Ό μ§ννκΈ° μν΄μλ DBμ μ κ·Όνλ Daoμ λν λμμ ꡬμ±ν΄μΌνλ€.
π κ·Έ μΈ ν μ€νΈκ° μ΄λ €μ΄ μ½λ
- λ©μλ μ€κ°μ μμΌ ν΅μ μ½λκ° ν¬ν¨
- μμΌ ν΅μ μ΄λ HTTP ν΅μ μ μ€μ λ체ν μλ²λ₯Ό λ‘컬μ λμμ μ²λ¦¬ κ°λ₯, μλ² μμ€μμ λμμ μ¬μ©νλ€κ³ μκ°
- μ½μμ μ λ ₯λ°κ±°λ κ²°κ³Όλ₯Ό μ½μμ μΆλ ₯
- ν μ€νΈ λμμ΄ μ¬μ©νλ μμ‘΄ λμ ν΄λμ€λ λ©μλκ° final -> λμμΌλ‘ λμ²΄κ° μ΄λ €μΈ μ μμ
- ν μ€νΈ λμμ μμ€λ₯Ό μμ νκ³ μμ§ μμ μμ μ΄ μ΄λ €μ
π₯¨ ν μ€νΈ κ°λ₯ν μ€κ³
ν μ€νΈκ° μ΄λ €μ΄ μ£Όλ μ΄μ λ μμ‘΄νλ μ½λλ₯Ό κ΅μ²΄ν μ μλ μλ¨μ΄ μκΈ° λλ¬Έμ΄λ€. λ°λΌμ, λ€μκ³Ό κ°μ΄ μ½λλ₯Ό κ΅μ²΄νλ©΄μ ν μ€νΈκ° κ°λ₯ν μ€κ²λ‘ λ³κ²½νλ κ²μ΄ νμνλ€.
1. νλ μ½λ©λ μμλ₯Ό μμ±μλ λ©μλ νλΌλ―Έν°λ‘ λ°κΈ°
2. μμ‘΄ λμμ μ£Όμ λ°κΈ°
3. ν μ€νΈνκ³ μΆμ μ½λ λΆλ¦¬νκΈ°
4. μκ°μ΄λ μμ κ° μμ± κΈ°λ₯ λΆλ¦¬νκΈ°
5. μΈλΆ λΌμ΄λΈλ¬λ¦¬λ μ§μ μ¬μ©νμ§ μκ³ κ°μΈμ μ¬μ©νκΈ°
π νλ μ½λ©λ μμλ₯Ό μμ±μλ λ©μλ νλΌλ―Έν°λ‘ λ°κΈ°
νλ μ½λ©λ κ²½λ‘κ° ν μ€νΈκ° μ΄λ €μ΄ μ΄μ λ ν μ€νΈ νκ²½μ λ°λΌ κ²½λ‘λ₯Ό λ€λ₯΄κ² μ€ μ μλ μλ¨μ΄ μκΈ° λλ¬Έμ΄λ€. λ°λΌμ, μμλ₯Ό μ½κ² κ΅μ²΄ν μ μλ κΈ°λ₯μ μΆκ°νλ©΄ λλ€.
public class PaySync{
private String "D:\\data\\pay\\cp0001.csv"
public void setFilePath(String filePath){
this.filePath = filePath;
}
}
νμΌ κ²½λ‘λ₯Ό λ³κ²½νλ λ λ€λ₯Έ λ°©λ²μ λ©μλλ₯Ό μ€νν λ μΈμλ‘ μ λ¬λ°λ κ²μ΄λ€.
public class PaySync{
private String "D:\\data\\pay\\cp0001.csv"
public void sync(String filePath) throws IOException{
Path path = Paths.get(filePath);
}
}
π μμ‘΄μ± μ£Όμ λ°κΈ°
μμ‘΄ λμμ μ£Όμ λ°μ μ μλ μμ±μλ Setter μλ¨μ μ 곡ν΄μ κ΅μ²΄ν μ μλλ‘ νλ€. μ΄λ₯Ό ν΅ν΄, μμ‘΄ λμμ κ΅μ²΄ν μ μκ² λλ©΄ μ€μ ꡬν λμ μ λμμ μ¬μ©ν μ μκ² λμ΄ ν μ€νΈλ₯Ό λ³΄λ€ μννκ² μμ±ν μ μκ² λλ€.
public class PaySync{
// μμ±μ μΆκ° νΉμ
public PaySync(PayInfoDao payInfoDao){
this.payInfoDao = payInfoDao;
}
// setter μΆκ°
public void setPayInfoDao(PayInfoDao payInfoDao){
this.payInfoDao = payInfoDao;
}
}
π ν μ€νΈνκ³ μΆμ μ½λ λΆλ¦¬νκΈ°
μ½λ μ€μ κΈ°λ₯ μΌλΆλ§ ν μ€νΈλ₯Ό νκ³ μΆμ κ²μ΄ μλ€λ©΄ κ·Έ μ½λλ₯Ό λ³λ κΈ°λ₯μΌλ‘ λΆλ¦¬νμ¬ ν μ€νΈλ₯Ό μ§νν μ μλ€.
π μκ°μ΄λ μμ κ° μμ± κΈ°λ₯ λΆλ¦¬νκΈ°
ν μ€νΈ λμμ΄ μκ°μ΄λ μμμ κ°μ μ¬μ©νλ©΄ ν μ€νΈ μμ μ λ°λΌ ν μ€νΈ κ²°κ³Όκ° λ¬λΌμ§λ€. μ΄ λ, ν μ€νΈ λμμ΄ μ¬μ©νλ μκ°μ΄λ μμμ μ 곡νλ κΈ°λ₯μ λΆλ¦¬νμ¬ ν μ€νΈμ κ°λ₯μ±μ λμ¬μΌ νλ€.
π μΈλΆ λΌμ΄λΈλ¬λ¦¬λ μ§μ μ¬μ©νμ§ μκ³ κ°μΈμ μ¬μ©νκΈ°
ν μ€νΈμμ μ¬μ©νλ μΈλΆ λΌμ΄λΈλ¬λ¦¬κ° μ μ λ©μλλ₯Ό μ 곡νλ€λ©΄ μ½κ² λ체ν μ μλ€.
boolean authorized = AuthUtil.authorize(authkey);
resp = AuthUtil.authenticate(id, pw);
λ€μκ³Ό κ°μ μ½λλ μ μ λ©μλμ΄κΈ° λλ¬Έμ λμμΌλ‘ λ체νκΈ° μ΄λ ΅λ€. λ°λΌμ, μΈλΆ λΌμ΄λΈλ¬λ¦¬λ₯Ό μ§μ μ¬μ©νμ§ μκ³ , μΈλΆ λΌμ΄λΈλ¬λ¦¬μ μ°λνκΈ° μν νμ μ μλ‘ λ§λ λ€. κ·Έλ¦¬κ³ ν μ€νΈ λμμ λΆλ¦¬ν νμ μ μ¬μ©νκ² λ§λ λ€.
ν μ€νΈ μ½λλ μλ‘ λΆλ¦¬ν νμ μ μμ±ν¨μΌλ‘μ¨ μΈλΆ μ°λμ΄ νμν κΈ°λ₯μ μ½κ² λμμΌλ‘ κ΅μ²΄ν μ μλ€.
public class AuthService{
private String = "somekey";
public int authenticate(String id, String pw){
boolean authorized = AuthUtil.authorize(authKey);
if(authorized){
return AuthUtil.authenticate(id, pw);
}else {
return -1;
}
}
}
'Backend Language > TDD' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[TDD Chapter9] ν μ€νΈ λ²μμ μ’ λ₯ (0) | 2023.02.23 |
---|---|
[TDD Chapter7] λμ (0) | 2023.02.12 |
[μ°Έκ³ ] Mockito κΈ°μ΄ μ¬μ©λ² (0) | 2023.02.12 |
[TDD Chapter6] ν μ€νΈ μ½λμ κ΅¬μ± (0) | 2023.02.04 |
[TDD Chapter5] JUnit 5 κΈ°μ΄ (1) | 2023.01.27 |