際際滷

際際滷Share a Scribd company logo
TDDwith JUnit
Test
Driven
Development
Junyoung Lee
14 5 28
Never in the 鍖eld of software development
was so much owed by
so many to so few lines of code
- Martin Fowler
14 5 28
Need
覓伎 ろ  蟆瑚?
Test
ろ ろ 
Code
ろ碁ゼ 糾骸 貊 
Refactoring
貊 譴覲 蟇
TDD Flow
Remind
14 5 28
 ろ  覈 螳讌 蠏豺
 ろ碁 るジ 覈  ろ碁り骸 襴曙朱 ろ伎 .
  ろ 螳螳 る襯 覲螻 覲願伎 .
企 ろ碁ゼ ろ 讌 蠍  .
14 5 28
JUnit り 覈
 ろ碁ゼ 燕  覲危 伎 .
螳 讌 螳豺螳 覲豺  ろ碁ゼ 燕  覲危 伎 .
貊  牛 ろ  觜 豢  覲危 伎 .
14 5 28
螻郁鍵 企れ 蠍
public class Calculator {
	 public double add(double number1, double number2) {
	 	 return number1 + number2;
	 }
}
14 5 28
public static void main(String[] args) {
	 Calculator calculator = new Calculator();
	 double result = calculator.add(10, 50);
	 if (result != 60) {
	 	 System.out.println("Bad result: " + result);
	 }
}
螳 add 覃 ろ
14 5 28
螳 add 覃 ろ
private int nbErrors = 0;
public void testAdd() {
	 Calculator calculator = new Calculator();
	 double result = calculator.add(10, 50);
	 if (result != 60) {
	 	 throw new IllegalStateException("Bad Request: " + result);
	 }
}
public static void main(String[] args) {
	 CalculatorTest test = new CalculatorTest();
	 try {
	 	 test.testAdd();
	 } catch (Throwable e) {
	 	 test.nbErrors++;
	 	 e.printStackTrace();
	 }
	
	 if (test.nbErrors > 0) {
	 	 throw new IllegalStateException("There were " + test.nbErrors + " error(s)");
	 }
}
14 5 28
import org.junit.Test;
import static org.junit.Assert.*;
public class CalculatorTest {
	 @Test
	 public void testAdd() {
	 	 Calculator calculator = new Calculator();
	 	 double result = calculator.add(10, 50);
	 	 assertEquals(60, result, 0);
	 }
}
JUnit  add 覃 ろ
14 5 28
JUnit
油旧
油れ
油覲願鍵
14 5 28
JUnit 旧
ろ 企り 蠍  譟郁唄
- public 企
- 蠍磯蓋 煙
ろ 覃 蠍  譟郁唄
- @Test
- public 覃
- 朱誤 X
- 覦 void
14 5 28
JUnit 旧
JUnit 螳 @Test 覃襯 語  襷
ろ 企れ 語ろ伎るゼ 襦 燕.
14 5 28
JUnit 旧
ろ 蟆讀 Assert 企れ  assert 覃襯 
assertXxx 覃
assertArrayEquals(message, A, B)
assertEquals(message, A, B)
assertSame(message, A, B)
assertTrue(message, A)
assertNotNull(message, A)
...
14 5 28
ろ 企(轟 ろ 貅伎)
@Test螳 覿 ろ碁ゼ  伎  企.
 蠍磯レ  ろ碁れ 蟷 覓矩 .
ろ碁 @Test螳 覿 覃襯 襷螻,
ろ 貅伎る ろ 覃襯  企るゼ 襷.
螳 ろ誤 企   ろ 企 襯 襷
14 5 28
ろ れ
ろ碁れ 讌.
ろ れ碁 蟯 ろ碁れ 蟷 覓矩 ク襴 
ろ 企れ 覲 ろ れ瑚 讌 る,
JUnit ろ 企 伎 覈 ろ碁ゼ 
ろ れ碁ゼ 朱 襷れ 譴.
14 5 28
ろ 
ろ れ ろ 讌.
JUnit ろ碁ゼ ろ   れ 螳 譴觜 .
豢 貉れろ 襯  .
14 5 28
Parameterized ろ
@RunWith(Parameterized.class)
public class ParameterizedTest {
	 private double expected;
	 private double valueOne;
	 private double valueTwo;
	
	 @Parameters
	 public static CollectionInteger[] getTestParameters() {
	 	 return Arrays.asList(new Integer[][]{
	 	 	 	 {2, 1, 1}, // 螳, 螳1, 螳2
	 	 	 	 {3, 2, 1}, // 螳, 螳1, 螳2
	 	 	 	 {4, 3, 1}, // 螳, 螳1, 螳2
	 	 });
	 }
	 public ParameterizedTest(double expected, double valueOne, double valueTwo) {
	 	 this.expected = expected;
	 	 this.valueOne = valueOne;
	 	 this.valueTwo = valueTwo;
	 }
	 @Test
	 public void sum() {
	 	 Calculator calc = new Calculator();
	 	 assertEquals(expected, calc.add(valueOne, valueTwo), 0);
	 }	
}
14 5 28
Parameterized ろ   譟郁唄
ろ 企れ @RunWith 誤伎 覿谿
@RunWith(Parameterized.class)
@Parameters 覃 
public static Collection?[] xxx()
貉 れ願 覦一伎 蠍語企 煙  朱誤一 蠍語伎 螳 
14 5 28
JUnit 螻牛 ろ 
org.junit.internal.runners.JUnit38ClassRunner
org.junit.runners.JUnit4
org.junit.runners.Parameterized
org.junit.runners.Suite
轟 Runner 讌
@RunWith( 企 企.class)
14 5 28
JUnitCore 殊
ろ ,
蟆郁骸 豬,
糾 螻
ろ語  襯 朱 
JUnitCore螳 螻牛 覲企ゼ Eclipse 蠏語語 GUI 觀磯 覲伎譴
14 5 28

More Related Content

What's hot (19)

C++ 襦語 ろ 蠍
C++ 襦語  ろ 蠍C++ 襦語  ろ 蠍
C++ 襦語 ろ 蠍
Heo Seungwook
Effective unit testing ch3. 梶梶メ梶
Effective unit testing   ch3. 梶梶メ梶Effective unit testing   ch3. 梶梶メ梶
Effective unit testing ch3. 梶梶メ梶
YongEun Choi
Effective Unit Testing
Effective Unit TestingEffective Unit Testing
Effective Unit Testing
Yeon Soo Kim
Okjsp 13譯朱 覦襭: 譟 襦蠏碁覦 Test
Okjsp 13譯朱 覦襭: 譟 襦蠏碁覦 TestOkjsp 13譯朱 覦襭: 譟 襦蠏碁覦 Test
Okjsp 13譯朱 覦襭: 譟 襦蠏碁覦 Test
beom kyun choi
ろ 螳ロ 語 り TDD (Testable design and TDD)
ろ 螳ロ 語 り TDD  (Testable design and TDD)ろ 螳ロ 語 り TDD  (Testable design and TDD)
ろ 螳ロ 語 り TDD (Testable design and TDD)
Suwon Chae
Introduce Katalon tool
Introduce Katalon toolIntroduce Katalon tool
Introduce Katalon tool
求== =堰梶
求== =堰梶求== =堰梶
求== =堰梶
YongEun Choi
Effective unit testing - 梶梶
Effective unit testing - 梶梶 Effective unit testing - 梶梶
Effective unit testing - 梶梶
YongEun Choi
KGC2010 - ′ 貊 ろ j鍵
KGC2010 - ′ 貊 ろ j鍵KGC2010 - ′ 貊 ろ j鍵
KGC2010 - ′ 貊 ろ j鍵
Ryan Park
TDD&Refactoring Day 01: Refactoring
TDD&Refactoring Day 01: RefactoringTDD&Refactoring Day 01: Refactoring
TDD&Refactoring Day 01: Refactoring
Suwon Chae
katalon studio 伎 伎 GUI ろ 螳企
katalon studio 伎 伎 GUI ろ  螳企katalon studio 伎 伎 GUI ろ  螳企
katalon studio 伎 伎 GUI ろ 螳企
SangIn Choung
蟲蠍ろ
蟲蠍ろ蟲蠍ろ
蟲蠍ろ
Devon 2011-b-5 螻殊 蟇一 貊 る蠍
Devon 2011-b-5 螻殊 蟇一 貊 る蠍Devon 2011-b-5 螻殊 蟇一 貊 る蠍
Devon 2011-b-5 螻殊 蟇一 貊 る蠍
Daum DNA
Io t 語企ろ_蠏殊襦
Io t 語企ろ_蠏殊襦Io t 語企ろ_蠏殊襦
Io t 語企ろ_蠏殊襦
SangIn Choung
TDD ==戟梶 @ 螻糾碁碁
TDD ==戟梶 @ 螻糾碁碁TDD ==戟梶 @ 螻糾碁碁
TDD ==戟梶 @ 螻糾碁碁
beom kyun choi
ろ語 TDD
ろ語 TDDろ語 TDD
ろ語 TDD
Sunghyouk Bae
ろ郁 襷 ろ語 螻 襦
ろ郁 襷 ろ語  螻 襦ろ郁 襷 ろ語  螻 襦
ろ郁 襷 ろ語 螻 襦
SangIn Choung
S66 goos-w7
S66 goos-w7S66 goos-w7
S66 goos-w7
Clean code
Clean codeClean code
Clean code
bbongcsu
C++ 襦語 ろ 蠍
C++ 襦語  ろ 蠍C++ 襦語  ろ 蠍
C++ 襦語 ろ 蠍
Heo Seungwook
Effective unit testing ch3. 梶梶メ梶
Effective unit testing   ch3. 梶梶メ梶Effective unit testing   ch3. 梶梶メ梶
Effective unit testing ch3. 梶梶メ梶
YongEun Choi
Effective Unit Testing
Effective Unit TestingEffective Unit Testing
Effective Unit Testing
Yeon Soo Kim
Okjsp 13譯朱 覦襭: 譟 襦蠏碁覦 Test
Okjsp 13譯朱 覦襭: 譟 襦蠏碁覦 TestOkjsp 13譯朱 覦襭: 譟 襦蠏碁覦 Test
Okjsp 13譯朱 覦襭: 譟 襦蠏碁覦 Test
beom kyun choi
ろ 螳ロ 語 り TDD (Testable design and TDD)
ろ 螳ロ 語 り TDD  (Testable design and TDD)ろ 螳ロ 語 り TDD  (Testable design and TDD)
ろ 螳ロ 語 り TDD (Testable design and TDD)
Suwon Chae
Introduce Katalon tool
Introduce Katalon toolIntroduce Katalon tool
Introduce Katalon tool
求== =堰梶
求== =堰梶求== =堰梶
求== =堰梶
YongEun Choi
Effective unit testing - 梶梶
Effective unit testing - 梶梶 Effective unit testing - 梶梶
Effective unit testing - 梶梶
YongEun Choi
KGC2010 - ′ 貊 ろ j鍵
KGC2010 - ′ 貊 ろ j鍵KGC2010 - ′ 貊 ろ j鍵
KGC2010 - ′ 貊 ろ j鍵
Ryan Park
TDD&Refactoring Day 01: Refactoring
TDD&Refactoring Day 01: RefactoringTDD&Refactoring Day 01: Refactoring
TDD&Refactoring Day 01: Refactoring
Suwon Chae
katalon studio 伎 伎 GUI ろ 螳企
katalon studio 伎 伎 GUI ろ  螳企katalon studio 伎 伎 GUI ろ  螳企
katalon studio 伎 伎 GUI ろ 螳企
SangIn Choung
蟲蠍ろ
蟲蠍ろ蟲蠍ろ
蟲蠍ろ
Devon 2011-b-5 螻殊 蟇一 貊 る蠍
Devon 2011-b-5 螻殊 蟇一 貊 る蠍Devon 2011-b-5 螻殊 蟇一 貊 る蠍
Devon 2011-b-5 螻殊 蟇一 貊 る蠍
Daum DNA
Io t 語企ろ_蠏殊襦
Io t 語企ろ_蠏殊襦Io t 語企ろ_蠏殊襦
Io t 語企ろ_蠏殊襦
SangIn Choung
TDD ==戟梶 @ 螻糾碁碁
TDD ==戟梶 @ 螻糾碁碁TDD ==戟梶 @ 螻糾碁碁
TDD ==戟梶 @ 螻糾碁碁
beom kyun choi
ろ郁 襷 ろ語 螻 襦
ろ郁 襷 ろ語  螻 襦ろ郁 襷 ろ語  螻 襦
ろ郁 襷 ろ語 螻 襦
SangIn Choung
S66 goos-w7
S66 goos-w7S66 goos-w7
S66 goos-w7
Clean code
Clean codeClean code
Clean code
bbongcsu

Viewers also liked (15)

Dropbox 蠖
Dropbox 蠖Dropbox 蠖
Dropbox 蠖
Junyoung Lee
襦 讌 殊郁鍵
襦 讌 殊郁鍵襦 讌 殊郁鍵
襦 讌 殊郁鍵
Junyoung Lee
=釈 メ (GitHub=求, git 企殊伎誤 メ)
=釈 メ (GitHub=求, git 企殊伎誤 メ)=釈 メ (GitHub=求, git 企殊伎誤 メ)
=釈 メ (GitHub=求, git 企殊伎誤 メ)
Junyoung Lee
貉るЖ 殊 蟲 蠍 - zsh + oh-my-zsh, tmux, peco
貉るЖ 殊 蟲 蠍 - zsh + oh-my-zsh, tmux, peco貉るЖ 殊 蟲 蠍 - zsh + oh-my-zsh, tmux, peco
貉るЖ 殊 蟲 蠍 - zsh + oh-my-zsh, tmux, peco
Daegwon Kim
際際滷share font test
際際滷share font test際際滷share font test
際際滷share font test
Junyoung Lee
Git 蠍 GitHub 螳 譴觜
Git 蠍 GitHub 螳  譴觜Git 蠍 GitHub 螳  譴觜
Git 蠍 GitHub 螳 譴觜
Junyoung Lee
Git
GitGit
Git
Junyoung Lee
Git 蠍 GitHub(Git企殊伎誤 ) / Getting started with git+github
Git 蠍 GitHub(Git企殊伎誤 ) / Getting started with git+githubGit 蠍 GitHub(Git企殊伎誤 ) / Getting started with git+github
Git 蠍 GitHub(Git企殊伎誤 ) / Getting started with git+github
Junyoung Lee
Git 蠍 GitHub(蟲襴IDE 蟆)
Git 蠍 GitHub(蟲襴IDE 蟆)Git 蠍 GitHub(蟲襴IDE 蟆)
Git 蠍 GitHub(蟲襴IDE 蟆)
Junyoung Lee
Python Recipes for django girls seoul
Python Recipes for django girls seoulPython Recipes for django girls seoul
Python Recipes for django girls seoul
Joeun Park
[NDC16] Effective Git
[NDC16] Effective Git[NDC16] Effective Git
[NDC16] Effective Git
Chanwoong Kim
梶 釈メ梶 堰= 求 求求
梶 釈メ梶 堰= 求 求求梶 釈メ梶 堰= 求 求求
梶 釈メ梶 堰= 求 求求
Matthew ()
衣 IDE 求
衣 IDE 求衣 IDE 求
衣 IDE 求
Junyoung Lee
ReactJS襦 覃壱 螳覦蠍
ReactJS襦  覃壱 螳覦蠍ReactJS襦  覃壱 螳覦蠍
ReactJS襦 覃壱 螳覦蠍
Taegon Kim
襦 讌 殊郁鍵
襦 讌 殊郁鍵襦 讌 殊郁鍵
襦 讌 殊郁鍵
Junyoung Lee
=釈 メ (GitHub=求, git 企殊伎誤 メ)
=釈 メ (GitHub=求, git 企殊伎誤 メ)=釈 メ (GitHub=求, git 企殊伎誤 メ)
=釈 メ (GitHub=求, git 企殊伎誤 メ)
Junyoung Lee
貉るЖ 殊 蟲 蠍 - zsh + oh-my-zsh, tmux, peco
貉るЖ 殊 蟲 蠍 - zsh + oh-my-zsh, tmux, peco貉るЖ 殊 蟲 蠍 - zsh + oh-my-zsh, tmux, peco
貉るЖ 殊 蟲 蠍 - zsh + oh-my-zsh, tmux, peco
Daegwon Kim
際際滷share font test
際際滷share font test際際滷share font test
際際滷share font test
Junyoung Lee
Git 蠍 GitHub 螳 譴觜
Git 蠍 GitHub 螳  譴觜Git 蠍 GitHub 螳  譴觜
Git 蠍 GitHub 螳 譴觜
Junyoung Lee
Git 蠍 GitHub(Git企殊伎誤 ) / Getting started with git+github
Git 蠍 GitHub(Git企殊伎誤 ) / Getting started with git+githubGit 蠍 GitHub(Git企殊伎誤 ) / Getting started with git+github
Git 蠍 GitHub(Git企殊伎誤 ) / Getting started with git+github
Junyoung Lee
Git 蠍 GitHub(蟲襴IDE 蟆)
Git 蠍 GitHub(蟲襴IDE 蟆)Git 蠍 GitHub(蟲襴IDE 蟆)
Git 蠍 GitHub(蟲襴IDE 蟆)
Junyoung Lee
Python Recipes for django girls seoul
Python Recipes for django girls seoulPython Recipes for django girls seoul
Python Recipes for django girls seoul
Joeun Park
[NDC16] Effective Git
[NDC16] Effective Git[NDC16] Effective Git
[NDC16] Effective Git
Chanwoong Kim
梶 釈メ梶 堰= 求 求求
梶 釈メ梶 堰= 求 求求梶 釈メ梶 堰= 求 求求
梶 釈メ梶 堰= 求 求求
Matthew ()
ReactJS襦 覃壱 螳覦蠍
ReactJS襦  覃壱 螳覦蠍ReactJS襦  覃壱 螳覦蠍
ReactJS襦 覃壱 螳覦蠍
Taegon Kim

Similar to TDD with JUnit 2 (17)

Sonarqube 20160509
Sonarqube 20160509Sonarqube 20160509
Sonarqube 20160509
10 蟆郁骸 蟆讀
10 蟆郁骸 蟆讀10 蟆郁骸 蟆讀
10 蟆郁骸 蟆讀
dagri82
Backend Master | 3.2.1 Test - JUnit
Backend Master | 3.2.1 Test - JUnitBackend Master | 3.2.1 Test - JUnit
Backend Master | 3.2.1 Test - JUnit
Kyunghun Jeon
[D2 ろ碁碁]5.robolectric =梶求 梶求
[D2 ろ碁碁]5.robolectric =梶求 梶求[D2 ろ碁碁]5.robolectric =梶求 梶求
[D2 ろ碁碁]5.robolectric =梶求 梶求
NAVER D2
JUnit & AssertJ
JUnit & AssertJJUnit & AssertJ
JUnit & AssertJ
Sunghyouk Bae
(ろ襷蟲/襷企一り″豢豌_襴)#10.ろ襷 & 襷企一 (Spring Framework, MyBatis)
(ろ襷蟲/襷企一り″豢豌_襴)#10.ろ襷 & 襷企一 (Spring Framework, MyBatis)(ろ襷蟲/襷企一り″豢豌_襴)#10.ろ襷 & 襷企一 (Spring Framework, MyBatis)
(ろ襷蟲/襷企一り″豢豌_襴)#10.ろ襷 & 襷企一 (Spring Framework, MyBatis)
襴(蟲襦讌碁讌3覯豢蟲 2覿蟇磯Μ)
[OKKYCON] 覦 - 一旧朱 TDD, 襴襷 一牛蠍
[OKKYCON] 覦 -  一旧朱 TDD, 襴襷 一牛蠍[OKKYCON] 覦 -  一旧朱 TDD, 襴襷 一牛蠍
[OKKYCON] 覦 - 一旧朱 TDD, 襴襷 一牛蠍
OKKY
[覦″旧 貉危郁骸螻] C++ 襦蠏碁覦 螻殊覓
[覦″旧 貉危郁骸螻] C++ 襦蠏碁覦 螻殊覓 [覦″旧 貉危郁骸螻] C++ 襦蠏碁覦 螻殊覓
[覦″旧 貉危郁骸螻] C++ 襦蠏碁覦 螻殊覓
Lee Sang-Ho
20130118 觜 ろ襷 碁碁
20130118 觜 ろ襷 碁碁20130118 觜 ろ襷 碁碁
20130118 觜 ろ襷 碁碁
JunHak Kim
Robot framework 梶 求釈= 求梶 梶 =釈
Robot framework 梶 求釈= 求梶 梶 =釈Robot framework 梶 求釈= 求梶 梶 =釈
Robot framework 梶 求釈= 求梶 梶 =釈
Jaehoon Oh
Legacy code refactoring video rental system
Legacy code refactoring   video rental systemLegacy code refactoring   video rental system
Legacy code refactoring video rental system
Jaehoon Oh
Android unit testing
Android unit testingAndroid unit testing
Android unit testing
Hyeoungkyu Chang
xUnitTestPattern/chapter7
xUnitTestPattern/chapter7xUnitTestPattern/chapter7
xUnitTestPattern/chapter7
譬觜
ろ襷 & 襷企一 覓.襭 螳襭 螻 (Spring IoC & DI)_ 蟲襦覦/蟲襦る狩危/蟲襦IT
ろ襷 & 襷企一 覓.襭 螳襭 螻 (Spring IoC & DI)_ 蟲襦覦/蟲襦る狩危/蟲襦ITろ襷 & 襷企一 覓.襭 螳襭 螻 (Spring IoC & DI)_ 蟲襦覦/蟲襦る狩危/蟲襦IT
ろ襷 & 襷企一 覓.襭 螳襭 螻 (Spring IoC & DI)_ 蟲襦覦/蟲襦る狩危/蟲襦IT
襴(蟲襦讌碁讌3覯豢蟲 2覿蟇磯Μ)
Clean code appendix 1
Clean code appendix 1Clean code appendix 1
Clean code appendix 1
HyeonSeok Choi
Sonarqube 20160509
Sonarqube 20160509Sonarqube 20160509
Sonarqube 20160509
10 蟆郁骸 蟆讀
10 蟆郁骸 蟆讀10 蟆郁骸 蟆讀
10 蟆郁骸 蟆讀
dagri82
Backend Master | 3.2.1 Test - JUnit
Backend Master | 3.2.1 Test - JUnitBackend Master | 3.2.1 Test - JUnit
Backend Master | 3.2.1 Test - JUnit
Kyunghun Jeon
[D2 ろ碁碁]5.robolectric =梶求 梶求
[D2 ろ碁碁]5.robolectric =梶求 梶求[D2 ろ碁碁]5.robolectric =梶求 梶求
[D2 ろ碁碁]5.robolectric =梶求 梶求
NAVER D2
(ろ襷蟲/襷企一り″豢豌_襴)#10.ろ襷 & 襷企一 (Spring Framework, MyBatis)
(ろ襷蟲/襷企一り″豢豌_襴)#10.ろ襷 & 襷企一 (Spring Framework, MyBatis)(ろ襷蟲/襷企一り″豢豌_襴)#10.ろ襷 & 襷企一 (Spring Framework, MyBatis)
(ろ襷蟲/襷企一り″豢豌_襴)#10.ろ襷 & 襷企一 (Spring Framework, MyBatis)
襴(蟲襦讌碁讌3覯豢蟲 2覿蟇磯Μ)
[OKKYCON] 覦 - 一旧朱 TDD, 襴襷 一牛蠍
[OKKYCON] 覦 -  一旧朱 TDD, 襴襷 一牛蠍[OKKYCON] 覦 -  一旧朱 TDD, 襴襷 一牛蠍
[OKKYCON] 覦 - 一旧朱 TDD, 襴襷 一牛蠍
OKKY
[覦″旧 貉危郁骸螻] C++ 襦蠏碁覦 螻殊覓
[覦″旧 貉危郁骸螻] C++ 襦蠏碁覦 螻殊覓 [覦″旧 貉危郁骸螻] C++ 襦蠏碁覦 螻殊覓
[覦″旧 貉危郁骸螻] C++ 襦蠏碁覦 螻殊覓
Lee Sang-Ho
20130118 觜 ろ襷 碁碁
20130118 觜 ろ襷 碁碁20130118 觜 ろ襷 碁碁
20130118 觜 ろ襷 碁碁
JunHak Kim
Robot framework 梶 求釈= 求梶 梶 =釈
Robot framework 梶 求釈= 求梶 梶 =釈Robot framework 梶 求釈= 求梶 梶 =釈
Robot framework 梶 求釈= 求梶 梶 =釈
Jaehoon Oh
Legacy code refactoring video rental system
Legacy code refactoring   video rental systemLegacy code refactoring   video rental system
Legacy code refactoring video rental system
Jaehoon Oh
xUnitTestPattern/chapter7
xUnitTestPattern/chapter7xUnitTestPattern/chapter7
xUnitTestPattern/chapter7
譬觜
ろ襷 & 襷企一 覓.襭 螳襭 螻 (Spring IoC & DI)_ 蟲襦覦/蟲襦る狩危/蟲襦IT
ろ襷 & 襷企一 覓.襭 螳襭 螻 (Spring IoC & DI)_ 蟲襦覦/蟲襦る狩危/蟲襦ITろ襷 & 襷企一 覓.襭 螳襭 螻 (Spring IoC & DI)_ 蟲襦覦/蟲襦る狩危/蟲襦IT
ろ襷 & 襷企一 覓.襭 螳襭 螻 (Spring IoC & DI)_ 蟲襦覦/蟲襦る狩危/蟲襦IT
襴(蟲襦讌碁讌3覯豢蟲 2覿蟇磯Μ)
Clean code appendix 1
Clean code appendix 1Clean code appendix 1
Clean code appendix 1
HyeonSeok Choi

TDD with JUnit 2

  • 2. Never in the 鍖eld of software development was so much owed by so many to so few lines of code - Martin Fowler 14 5 28
  • 3. Need 覓伎 ろ 蟆瑚? Test ろ ろ Code ろ碁ゼ 糾骸 貊 Refactoring 貊 譴覲 蟇 TDD Flow Remind 14 5 28
  • 4. 覈 螳讌 蠏豺 ろ碁 るジ 覈 ろ碁り骸 襴曙朱 ろ伎 . ろ 螳螳 る襯 覲螻 覲願伎 . 企 ろ碁ゼ ろ 讌 蠍 . 14 5 28
  • 5. JUnit り 覈 ろ碁ゼ 燕 覲危 伎 . 螳 讌 螳豺螳 覲豺 ろ碁ゼ 燕 覲危 伎 . 貊 牛 ろ 觜 豢 覲危 伎 . 14 5 28
  • 6. 螻郁鍵 企れ 蠍 public class Calculator { public double add(double number1, double number2) { return number1 + number2; } } 14 5 28
  • 7. public static void main(String[] args) { Calculator calculator = new Calculator(); double result = calculator.add(10, 50); if (result != 60) { System.out.println("Bad result: " + result); } } 螳 add 覃 ろ 14 5 28
  • 8. 螳 add 覃 ろ private int nbErrors = 0; public void testAdd() { Calculator calculator = new Calculator(); double result = calculator.add(10, 50); if (result != 60) { throw new IllegalStateException("Bad Request: " + result); } } public static void main(String[] args) { CalculatorTest test = new CalculatorTest(); try { test.testAdd(); } catch (Throwable e) { test.nbErrors++; e.printStackTrace(); } if (test.nbErrors > 0) { throw new IllegalStateException("There were " + test.nbErrors + " error(s)"); } } 14 5 28
  • 9. import org.junit.Test; import static org.junit.Assert.*; public class CalculatorTest { @Test public void testAdd() { Calculator calculator = new Calculator(); double result = calculator.add(10, 50); assertEquals(60, result, 0); } } JUnit add 覃 ろ 14 5 28
  • 10. JUnit
  • 14. JUnit 旧 ろ 企り 蠍 譟郁唄 - public 企 - 蠍磯蓋 煙 ろ 覃 蠍 譟郁唄 - @Test - public 覃 - 朱誤 X - 覦 void 14 5 28
  • 15. JUnit 旧 JUnit 螳 @Test 覃襯 語 襷 ろ 企れ 語ろ伎るゼ 襦 燕. 14 5 28
  • 16. JUnit 旧 ろ 蟆讀 Assert 企れ assert 覃襯 assertXxx 覃 assertArrayEquals(message, A, B) assertEquals(message, A, B) assertSame(message, A, B) assertTrue(message, A) assertNotNull(message, A) ... 14 5 28
  • 17. ろ 企(轟 ろ 貅伎) @Test螳 覿 ろ碁ゼ 伎 企. 蠍磯レ ろ碁れ 蟷 覓矩 . ろ碁 @Test螳 覿 覃襯 襷螻, ろ 貅伎る ろ 覃襯 企るゼ 襷. 螳 ろ誤 企 ろ 企 襯 襷 14 5 28
  • 18. ろ れ ろ碁れ 讌. ろ れ碁 蟯 ろ碁れ 蟷 覓矩 ク襴 ろ 企れ 覲 ろ れ瑚 讌 る, JUnit ろ 企 伎 覈 ろ碁ゼ ろ れ碁ゼ 朱 襷れ 譴. 14 5 28
  • 19. ろ ろ れ ろ 讌. JUnit ろ碁ゼ ろ れ 螳 譴觜 . 豢 貉れろ 襯 . 14 5 28
  • 20. Parameterized ろ @RunWith(Parameterized.class) public class ParameterizedTest { private double expected; private double valueOne; private double valueTwo; @Parameters public static CollectionInteger[] getTestParameters() { return Arrays.asList(new Integer[][]{ {2, 1, 1}, // 螳, 螳1, 螳2 {3, 2, 1}, // 螳, 螳1, 螳2 {4, 3, 1}, // 螳, 螳1, 螳2 }); } public ParameterizedTest(double expected, double valueOne, double valueTwo) { this.expected = expected; this.valueOne = valueOne; this.valueTwo = valueTwo; } @Test public void sum() { Calculator calc = new Calculator(); assertEquals(expected, calc.add(valueOne, valueTwo), 0); } } 14 5 28
  • 21. Parameterized ろ 譟郁唄 ろ 企れ @RunWith 誤伎 覿谿 @RunWith(Parameterized.class) @Parameters 覃 public static Collection?[] xxx() 貉 れ願 覦一伎 蠍語企 煙 朱誤一 蠍語伎 螳 14 5 28
  • 22. JUnit 螻牛 ろ org.junit.internal.runners.JUnit38ClassRunner org.junit.runners.JUnit4 org.junit.runners.Parameterized org.junit.runners.Suite 轟 Runner 讌 @RunWith( 企 企.class) 14 5 28
  • 23. JUnitCore 殊 ろ , 蟆郁骸 豬, 糾 螻 ろ語 襯 朱 JUnitCore螳 螻牛 覲企ゼ Eclipse 蠏語語 GUI 觀磯 覲伎譴 14 5 28
  • 24. れ碁ゼ 伎 ろ 譟一蠍 ろ 企り 螳 朱..? ろ 企 焔れ ろ? 蠍磯蓋 ろ 蠍磯蓋 れ ろ 企 ろ 14 5 28
  • 25. れ碁ゼ 伎 ろ 譟一蠍 ろ れ @RunWith(Suite.class) @SuiteClassed({Classes..}) れ碁 ろ 企 伎 覈 @Test 覃れ 谿場 ろ 殊 . @RunWith(Suite.class) @SuiteClasses({ CalculatorTest.class, ParameterizedTest.class}) public class AllTests { } 14 5 28
  • 26. れ語 れ @RunWith(Suite.class) @SuiteClasses({CalculatorTest.class}) public class TestSuiteA { } @RunWith(Suite.class) @SuiteClasses({ParameterizedTest.class}) public class TestSuiteB { } @RunWith(Suite.class) @SuiteClasses({TestSuiteA.class, TestSuiteB.class}) public class MasterTestSuite { } 14 5 28