JUnit 5 5 20 20 FIT 20 FIT FIT 10
IT OO Web XML ADC2003 WG
JUnit
JUnit 3.8.1 URL: http://www.junit.org/index.htm junit.3.8.1.zip junit.jar c: junit junit.jar javac -classpath c: junit junit.jar JUnitTest.java java -cp.;c: junit junit.jar junit.textui.testrunner JUnitTest
junit.framework.testcase public void testxxxx() import import junit.framework.testcase; public public class class JUnitSample extends TestCase{ public public void void testsample1(){ System.out.println( ); );
JUnit
assert asserttrue asserttrue(math.abs(-1) >= 0); assertequals assertequals(3, 1 + 2); assertequals( abcd, ab + cd ); fail fail( );
c: angya junit FirstTest.java c: angya junit FirstTest.java import import junit.framework.testcase; junit.framework.testcase; public public class class FirstTest FirstTest extends extends TestCase{ TestCase{ public public void void testsuccess(){ testsuccess(){ //true //true true true asserttrue(true); asserttrue(true); public public void void testfail(){ testfail(){ // // 1 1 assertequals(0, assertequals(0, 1); 1); public public void void testerror(){ testerror(){ // // int int i i = = 0/0; 0/0; c: angya junit>javac c: angya junit>javac-classpath -classpathc: junit junit.jar c: junit junit.jar FirstTest.java FirstTest.java c: angya junit>java c: angya junit>java -cp -cp.;c: junit junit.jar junit.swingui.testrunner junit.swingui.testrunnerfirsttest
public public class class Calc{ Calc{ public public int int add(int add(int a, a, int int b){ b){ return return a + b; b; import import junit.framework.testcase; public public class class CalcTest CalcTest extends extends TestCase{ public public void void testadd(){ Calc Calc c = new new Calc(); Calc(); assertequals(3, c.add(1, c.add(1, 2)); 2));
(TDD:Test Driven Development) C1
TDD(
TDD 1. 2. 3. 4. 5. 6. (1) 7. 1 6
TDD (1/13) Calc (int) add sub mul div 2 ToDo
TDD (2/13) c: angya calc CalcTest.java Calc CalcTest c: angya calc CalcTest.java import import junit.framework.testcase; junit.framework.testcase; public public class class CalcTest CalcTest extends extends TestCase{ TestCase{
TDD (3/13) add testadd c: angya calc CalcTest.java c: angya calc CalcTest.java import import junit.framework.testcase; junit.framework.testcase; public public void public class class CalcTest CalcTest extends extends TestCase{ public TestCase{ public void void testadd(){ testadd(){
TDD (4/13) Swing
TDD (5/13) 1+2=3 c: angya calc CalcTest.java c: angya calc CalcTest.java add import junit.framework.testcase; import junit.framework.testcase; public public class class CalcTest CalcTest extends extends TestCase{ public TestCase{ public void void testadd(){ testadd(){ Calc Calc c c = = new new Calc(); Calc(); assertequals(3, assertequals(3, c.add(1, c.add(1, 2)); 2));
TDD (6/13) Calc
TDD (7/13) c: angya calc Calc.java c: angya calc Calc.java public public class class Calc{ Calc{ return return 0; 0; return 0 public public int int add(int add(int a, a, int int b){ b){
TDD (8/13)
TDD (9/13) JUnit [Run] add 0
TDD (10/13) c: angya calc Calc.java c: angya calc Calc.java public public class class Calc{ public Calc{ assertequals(3, public int int add(int add(int a, a, int int b){ b){ return return 3; 3; c.add(1, 2)); return 3;
TDD (11/13)
TDD (12/13) assertequals(3, c.add(1, 2)); return 3; c: angya calc Calc.java c: angya calc Calc.java 3 return a + b; public public class class Calc{ public Calc{ public int int add(int add(int a, a, int int b){ b){ return return a a + + b; b;
TDD (13/13) ToDo
TDD Fake It Refactoring Triangulation return 0; return 3; Fake It Refactoring return a+b; return 0; Fake It return 3; Refactoring Obvious Implementaion return a+b; return 0; return a+b;
X+Y 2 X 2 +2XY+Y 2 (X+Y)(X+Y) = X(X+Y)+Y(X+Y) = X 2 +XY+XY+Y 2 = X 2 +2XY+Y 2
isempty() true false size() push() void push(int value) pop() void pop() java.util.emptystackexception top() int top() java.util.emptystackexception
Stack StackTest Stack isempty() true
StackTest import java.util.emptystackexception; import junit.framework.testcase; /** * @author hiranabe, kitano */ public class StackTest extends TestCase { private Stack stack; protected void setup() { stack = new Stack(); public void testcreate() { asserttrue(stack.isempty()); public void testpushandtop() { stack.push(1); assertfalse(stack.isempty()); assertequals(1, stack.top()); stack.push(2); assertequals(2, stack.top()); public void testpushandsize() { stack.push(1); assertequals(1, stack.size()); stack.push(2); assertequals(2, stack.size()); public void testemptypop() { try { stack.pop(); fail(); catch (EmptyStackException expected) { public void testpushandpop() { stack.push(1); stack.pop(); assertequals(0, stack.size()); public void testpushpushpoptop() { stack.push(1); stack.push(2); assertequals(2, stack.size()); stack.pop(); assertequals(1, stack.top()); public void testemptytop() { try { stack.top(); fail(); catch (EmptyStackException expected) {
Stack import java.util.emptystackexception; /** * @author hiranabe, kitano */ public class Stack { private int[] value = new int[10]; private int size; public boolean isempty() { return size == 0; public int top() { emptycheck(); return value[size - 1]; public void push(int value) { this.value[size++] = value; public int size() { return size; public void pop() { emptycheck(); --size; private void emptycheck() { if (isempty()) throw new EmptyStackException();
?!
FIT FIT Framework for Integrated Test XP Ward Cunningham ObjectMentor FITNESSE http://fit.c2.com/ http://fitnesse.org/
FIT View Model WikiTop
FIT JUnit
FIT FIT TextFixture
Fixture FIT Fixture
FIT ColumnFixture SampleColumnFixture x 1 3 y 2 5 x set add() 3 8 SampleColumnFixture x y set y add() add()
FIT
FIT FITNESSE PC fitnesse /run.bat Apache 80 Listen Web http://localhost/
FITNESSE CalcTest FIT
CalcTest ClassPath Test
ClassPath Edit c: eclipse workspace sample!path fit.jar!path fitnesse.jar!path C: eclipse workspace sample Save
Calc Eclipse sample.calc package sample; import fit.columnfixture; public class Calc extends ColumnFixture {
package sample; import fit.columnfixture; public class Calc extends ColumnFixture { public int x; public int y; public int add() { return x+y;
FIT FITNESSE FrontPage TestEasyCalendar
1 30 1 360 from, to, days() days() from to
import java.util.date; import fit.columnfixture; public class EasyCalendarFixture extends ColumnFixture { public Date from; public Date to; public int days() { EasyCalendar ezcal = new EasyCalendar(); return ezcal.getbetweendays(from, to);
import java.util.calendar; import java.util.date; import java.util.gregoriancalendar; public class EasyCalendar { public int getbetweendays(date from, Date to) { Calendar calfrom = date2calendar(from); Calendar calto = date2calendar(to); return getdiffyears(calfrom, calto) * 360 + getdiffmonths(calfrom, calto) *30 + getdiffdays(calfrom, calto); private int getdiffdays(calendar calfrom, Calendar calto) { return getdiffcalendar(calfrom, calto, Calendar.DATE); private int getdiffmonths(calendar calfrom, Calendar calto){ return getdiffcalendar(calfrom, calto, Calendar.MONTH); private int getdiffyears(calendar calfrom, Calendar calto){ return getdiffcalendar(calfrom, calto, Calendar.YEAR); private int getdiffcalendar(calendar calfrom, Calendar calto, int ymd) { return calto.get(ymd) - calfrom.get(ymd); private Calendar date2calendar(date date){ Calendar calendar = new GregorianCalendar(); calendar.settime(date); return calendar; FIT JavaPressVol34
Memo
Memo