+ All Categories
Home > Documents > TestData Builder(( - Entwicklertag · private static Order createOrderWithValueOf(double value) {...

TestData Builder(( - Entwicklertag · private static Order createOrderWithValueOf(double value) {...

Date post: 10-Oct-2020
Category:
Upload: others
View: 1 times
Download: 0 times
Share this document with a friend
131
TestData Builder ma0hias.bisping mar7n.klose @klosebrothers.de
Transcript
Page 1: TestData Builder(( - Entwicklertag · private static Order createOrderWithValueOf(double value) { return createOrder(value, true, thisYear()); } private static Order createOrderFromThisYearWithValue

Test-­‐Data  Builder    

ma0hias.bisping  mar7n.klose  @klosebrothers.de  

Page 2: TestData Builder(( - Entwicklertag · private static Order createOrderWithValueOf(double value) { return createOrder(value, true, thisYear()); } private static Order createOrderFromThisYearWithValue

 h#p://flickr.com/photos/editor/6698208975  

Page 3: TestData Builder(( - Entwicklertag · private static Order createOrderWithValueOf(double value) { return createOrder(value, true, thisYear()); } private static Order createOrderFromThisYearWithValue

komplexes  Test-­‐Setup  

Page 4: TestData Builder(( - Entwicklertag · private static Order createOrderWithValueOf(double value) { return createOrder(value, true, thisYear()); } private static Order createOrderFromThisYearWithValue

Abhängigkeiten  

Page 5: TestData Builder(( - Entwicklertag · private static Order createOrderWithValueOf(double value) { return createOrder(value, true, thisYear()); } private static Order createOrderFromThisYearWithValue

komplexe  Objekte  

Page 6: TestData Builder(( - Entwicklertag · private static Order createOrderWithValueOf(double value) { return createOrder(value, true, thisYear()); } private static Order createOrderFromThisYearWithValue

Duplika7on  

Page 7: TestData Builder(( - Entwicklertag · private static Order createOrderWithValueOf(double value) { return createOrder(value, true, thisYear()); } private static Order createOrderFromThisYearWithValue

Fragile  Tests  

 h#p://flickr.com/photos/jonodavis/7476648174/  

Page 8: TestData Builder(( - Entwicklertag · private static Order createOrderWithValueOf(double value) { return createOrder(value, true, thisYear()); } private static Order createOrderFromThisYearWithValue

Legacy  Code  testen  

Page 9: TestData Builder(( - Entwicklertag · private static Order createOrderWithValueOf(double value) { return createOrder(value, true, thisYear()); } private static Order createOrderFromThisYearWithValue

Test  /  Refaktor  Dilemma  

 h#p://flickr.com/photos/the-­‐wanderers-­‐eye/4494147652/    

Page 10: TestData Builder(( - Entwicklertag · private static Order createOrderWithValueOf(double value) { return createOrder(value, true, thisYear()); } private static Order createOrderFromThisYearWithValue

Noise  

Page 11: TestData Builder(( - Entwicklertag · private static Order createOrderWithValueOf(double value) { return createOrder(value, true, thisYear()); } private static Order createOrderFromThisYearWithValue

101  Test-­‐Data  Builder  

Page 12: TestData Builder(( - Entwicklertag · private static Order createOrderWithValueOf(double value) { return createOrder(value, true, thisYear()); } private static Order createOrderFromThisYearWithValue

Kunden  Scoring  

 h#p://flickr.com/photos/anythreewords/336903507/  

Page 13: TestData Builder(( - Entwicklertag · private static Order createOrderWithValueOf(double value) { return createOrder(value, true, thisYear()); } private static Order createOrderFromThisYearWithValue

Score    •  Umsätze  der  letzten  12  Monate    

•  je  1.000  EUR  Umsatz  1  Punkt    

•  Zahlungsverzug  5  Punkte  Abzug          

Page 14: TestData Builder(( - Entwicklertag · private static Order createOrderWithValueOf(double value) { return createOrder(value, true, thisYear()); } private static Order createOrderFromThisYearWithValue

Score      bis  4        =>      Vorkasse      4    bis  8      =>      Vorkasse            Nachnahme  

 über      8      =>  Vorkasse            Nachnahme            Rechnung    

       

Page 15: TestData Builder(( - Entwicklertag · private static Order createOrderWithValueOf(double value) { return createOrder(value, true, thisYear()); } private static Order createOrderFromThisYearWithValue

Arrange  Act  

Assert  William  C.  Wake    

Page 16: TestData Builder(( - Entwicklertag · private static Order createOrderWithValueOf(double value) { return createOrder(value, true, thisYear()); } private static Order createOrderFromThisYearWithValue

Arrange  Objects  

h#p://flickr.com/photos/50896278@N06/6134612964/  

Page 17: TestData Builder(( - Entwicklertag · private static Order createOrderWithValueOf(double value) { return createOrder(value, true, thisYear()); } private static Order createOrderFromThisYearWithValue

@Test public void a_customer_with_a_score_of_4_can_pay_in_advance_and_on_delivery() {

Address aAddress = new Address("Meisenstrasse 96", "33607", "Bielefeld");Customer aCustomer = new Customer("Mustermann AG", aAddress);

Order order = new Order();order.setValue(4000);order.setPayed(true);order.setOrderDate(new Date());

aCustomer.addOrder(order);

assertThat(aCustomer.getPossiblePaymentMethods(), containsInAnyOrder( PaymentMethod.prepayment, PaymentMethod.cashOnDelivery ));

}

Page 18: TestData Builder(( - Entwicklertag · private static Order createOrderWithValueOf(double value) { return createOrder(value, true, thisYear()); } private static Order createOrderFromThisYearWithValue

@Test public void a_customer_with_a_score_of_4_can_pay_in_advance_and_on_delivery() {

Address aAddress = new Address("Meisenstrasse 96", "33607", "Bielefeld");Customer aCustomer = new Customer("Mustermann AG", aAddress);

Order order = new Order();order.setValue(4000);order.setPayed(true);order.setOrderDate(new Date());

aCustomer.addOrder(order);

assertThat(aCustomer.getPossiblePaymentMethods(), containsInAnyOrder( PaymentMethod.prepayment, PaymentMethod.cashOnDelivery ));

}

Page 19: TestData Builder(( - Entwicklertag · private static Order createOrderWithValueOf(double value) { return createOrder(value, true, thisYear()); } private static Order createOrderFromThisYearWithValue

@Test public void a_customer_with_a_score_of_4_can_pay_in_advance_and_on_delivery() {

Address aAddress = new Address("Meisenstrasse 96", "33607", "Bielefeld");Customer aCustomer = new Customer("Mustermann AG", aAddress);

Order order = new Order();order.setValue(4000);order.setPayed(true);order.setOrderDate(new Date());

aCustomer.addOrder(order);

assertThat(aCustomer.getPossiblePaymentMethods(), containsInAnyOrder( PaymentMethod.prepayment, PaymentMethod.cashOnDelivery ));

}

Page 20: TestData Builder(( - Entwicklertag · private static Order createOrderWithValueOf(double value) { return createOrder(value, true, thisYear()); } private static Order createOrderFromThisYearWithValue

@Test public void a_customer_with_a_score_of_4_can_pay_in_advance_and_on_delivery() {

Address aAddress = new Address("Meisenstrasse 96", "33607", "Bielefeld");Customer aCustomer = new Customer("Mustermann AG", aAddress);

Order order = new Order();order.setValue(4000);order.setPayed(true);order.setOrderDate(new Date());

aCustomer.addOrder(order);

assertThat(aCustomer.getPossiblePaymentMethods(), containsInAnyOrder( PaymentMethod.prepayment, PaymentMethod.cashOnDelivery ));

}

Page 21: TestData Builder(( - Entwicklertag · private static Order createOrderWithValueOf(double value) { return createOrder(value, true, thisYear()); } private static Order createOrderFromThisYearWithValue

@Test public void a_customer_with_a_score_of_4_can_pay_in_advance_and_on_delivery() {

Address aAddress = new Address("Meisenstrasse 96", "33607", "Bielefeld");Customer aCustomer = new Customer("Mustermann AG", aAddress);

Order order = new Order();order.setValue(4000);order.setPayed(true);order.setOrderDate(new Date());

aCustomer.addOrder(order);

assertThat(aCustomer.getPossiblePaymentMethods(), containsInAnyOrder( PaymentMethod.prepayment, PaymentMethod.cashOnDelivery ));

}

Page 22: TestData Builder(( - Entwicklertag · private static Order createOrderWithValueOf(double value) { return createOrder(value, true, thisYear()); } private static Order createOrderFromThisYearWithValue

@Test public void a_customer_with_a_score_of_4_can_pay_in_advance_and_on_delivery() {

Address aAddress = new Address("Meisenstrasse 96", "33607", "Bielefeld");Customer aCustomer = new Customer("Mustermann AG", aAddress);

Order order = new Order();order.setValue(4000);order.setPayed(true);order.setOrderDate(new Date());

aCustomer.addOrder(order);

assertThat(aCustomer.getPossiblePaymentMethods(), containsInAnyOrder( PaymentMethod.prepayment, PaymentMethod.cashOnDelivery ));

}

Page 23: TestData Builder(( - Entwicklertag · private static Order createOrderWithValueOf(double value) { return createOrder(value, true, thisYear()); } private static Order createOrderFromThisYearWithValue

@Test public void a_customer_with_a_score_of_4_can_pay_in_advance_and_on_delivery() {

Address aAddress = new Address("Meisenstrasse 96", "33607", "Bielefeld");Customer aCustomer = new Customer("Mustermann AG", aAddress);

Order order = new Order();order.setValue(4000);order.setPayed(true);order.setOrderDate(new Date());

aCustomer.addOrder(order);

assertThat(aCustomer.getPossiblePaymentMethods(), containsInAnyOrder( PaymentMethod.prepayment, PaymentMethod.cashOnDelivery ));

}

Page 24: TestData Builder(( - Entwicklertag · private static Order createOrderWithValueOf(double value) { return createOrder(value, true, thisYear()); } private static Order createOrderFromThisYearWithValue

Factory-­‐Methoden  

Page 25: TestData Builder(( - Entwicklertag · private static Order createOrderWithValueOf(double value) { return createOrder(value, true, thisYear()); } private static Order createOrderFromThisYearWithValue

@Test public void a_customer_with_a_score_of_4_can_pay_in_advance_and_on_delivery() {

Address aAddress = new Address("Meisenstrasse 96", "33607", "Bielefeld");Customer aCustomer = new Customer("Mustermann AG", aAddress);

Order order = new Order();order.setValue(4000);order.setPayed(true);order.setOrderDate(new Date());

aCustomer.addOrder(order);

assertThat(aCustomer.getPossiblePaymentMethods(), containsInAnyOrder( PaymentMethod.prepayment, PaymentMethod.cashOnDelivery ));

}

Page 26: TestData Builder(( - Entwicklertag · private static Order createOrderWithValueOf(double value) { return createOrder(value, true, thisYear()); } private static Order createOrderFromThisYearWithValue

@Test public void a_customer_with_a_score_of_4_can_pay_in_advance_and_on_delivery() {

Address aAddress = new Address("Meisenstrasse 96", "33607", "Bielefeld");Customer aCustomer = new Customer("Mustermann AG", aAddress);

Order order = new Order();order.setValue(4000);order.setPayed(true);order.setOrderDate(new Date());

aCustomer.addOrder(order);

assertThat(aCustomer.getPossiblePaymentMethods(), containsInAnyOrder( PaymentMethod.prepayment, PaymentMethod.cashOnDelivery ));

}

Page 27: TestData Builder(( - Entwicklertag · private static Order createOrderWithValueOf(double value) { return createOrder(value, true, thisYear()); } private static Order createOrderFromThisYearWithValue

@Test public void a_customer_with_a_score_of_4_can_pay_in_advance_and_on_delivery() {

Order order = new Order();order.setValue(4000);order.setPayed(true);order.setOrderDate(new Date());

aCustomer.addOrder(order);

assertThat(aCustomer.getPossiblePaymentMethods(), containsInAnyOrder( PaymentMethod.prepayment, PaymentMethod.cashOnDelivery ));

} private Customer aCustomer; @Before public void init() { Address aAddress = new Address("Meisenstrasse 96", "33607", "Bielefeld"); aCustomer = new Customer("Mustermann AG", aAddress); }

Page 28: TestData Builder(( - Entwicklertag · private static Order createOrderWithValueOf(double value) { return createOrder(value, true, thisYear()); } private static Order createOrderFromThisYearWithValue

@Test public void a_customer_with_a_score_of_4_can_pay_in_advance_and_on_delivery() {

Order order = new Order();order.setValue(4000);order.setPayed(true);order.setOrderDate(new Date());

aCustomer.addOrder(order);

assertThat(aCustomer.getPossiblePaymentMethods(), containsInAnyOrder( PaymentMethod.prepayment, PaymentMethod.cashOnDelivery ));

}

Page 29: TestData Builder(( - Entwicklertag · private static Order createOrderWithValueOf(double value) { return createOrder(value, true, thisYear()); } private static Order createOrderFromThisYearWithValue

@Test public void a_customer_with_a_score_of_4_can_pay_in_advance_and_on_delivery() {

Order order = new Order();order.setValue(4000);order.setPayed(true);order.setOrderDate(new Date());

aCustomer.addOrder(order);

assertThat(aCustomer.getPossiblePaymentMethods(), containsInAnyOrder( PaymentMethod.prepayment, PaymentMethod.cashOnDelivery ));

}

Page 30: TestData Builder(( - Entwicklertag · private static Order createOrderWithValueOf(double value) { return createOrder(value, true, thisYear()); } private static Order createOrderFromThisYearWithValue

@Test public void a_customer_with_a_score_of_4_can_pay_in_advance_and_on_delivery() {

aCustomer.addOrder(createOrderWithValueOf(4000));assertThat(aCustomer.getPossiblePaymentMethods(), containsInAnyOrder( PaymentMethod.prepayment, PaymentMethod.cashOnDelivery ));

}

Page 31: TestData Builder(( - Entwicklertag · private static Order createOrderWithValueOf(double value) { return createOrder(value, true, thisYear()); } private static Order createOrderFromThisYearWithValue

@Test public void a_customer_with_a_score_of_4_can_pay_in_advance_and_on_delivery() {

aCustomer.addOrder(createOrderWithValueOf(4000));assertThat(aCustomer.getPossiblePaymentMethods(), containsInAnyOrder( PaymentMethod.prepayment, PaymentMethod.cashOnDelivery ));

} private static Order createOrderWithValueOf(double value) {

Order order = new Order();order.setValue(value);order.setPayed(true);order.setOrderDate(new Date());return order;

}

Page 32: TestData Builder(( - Entwicklertag · private static Order createOrderWithValueOf(double value) { return createOrder(value, true, thisYear()); } private static Order createOrderFromThisYearWithValue

private static Order createOrderWithValueOf(double value) { return createOrder(value, true, thisYear());}private static Order createOrderFromThisYearWithValue(double value) {

return createOrder(value, true, thisYear());}private static Order createOrderFromLastYearWithValue(double value) {

return createOrder(value, true, lastYear());}private static Order createOrderWithPaymentDeficitAndValueOf(double value) { return createOrder(value, false, thisYear());}private static Order createOrderWithPaymentDeficitFromLastYearWithValueOf

(double value) {return createOrder(1000, false, lastYear());

}

Page 33: TestData Builder(( - Entwicklertag · private static Order createOrderWithValueOf(double value) { return createOrder(value, true, thisYear()); } private static Order createOrderFromThisYearWithValue

private static Order createOrderWithValueOf(double value) { return createOrder(value, true, thisYear());}private static Order createOrderFromThisYearWithValue(double value) {

return createOrder(value, true, thisYear());}private static Order createOrderFromLastYearWithValue(double value) {

return createOrder(value, true, lastYear());}private static Order createOrderWithPaymentDeficitAndValueOf(double value) { return createOrder(value, false, thisYear());}private static Order createOrderWithPaymentDeficitFromLastYearWithValueOf

(double value) {return createOrder(1000, false, lastYear());

}

Page 34: TestData Builder(( - Entwicklertag · private static Order createOrderWithValueOf(double value) { return createOrder(value, true, thisYear()); } private static Order createOrderFromThisYearWithValue

private static Order createOrderWithValueOf(double value) { return createOrder(value, true, thisYear());}private static Order createOrderFromThisYearWithValue(double value) {

return createOrder(value, true, thisYear());}private static Order createOrderFromLastYearWithValue(double value) {

return createOrder(value, true, lastYear());}private static Order createOrderWithPaymentDeficitAndValueOf(double value) { return createOrder(value, false, thisYear());}private static Order createOrderWithPaymentDeficitFromLastYearWithValueOf

(double value) {return createOrder(1000, false, lastYear());

}

Page 35: TestData Builder(( - Entwicklertag · private static Order createOrderWithValueOf(double value) { return createOrder(value, true, thisYear()); } private static Order createOrderFromThisYearWithValue

private static Order createOrderWithValueOf(double value) { return createOrder(value, true, thisYear());}private static Order createOrderFromThisYearWithValue(double value) {

return createOrder(value, true, thisYear());}private static Order createOrderFromLastYearWithValue(double value) {

return createOrder(value, true, lastYear());}private static Order createOrderWithPaymentDeficitAndValueOf(double value) { return createOrder(value, false, thisYear());}private static Order createOrderWithPaymentDeficitFromLastYearWithValueOf

(double value) {return createOrder(1000, false, lastYear());

}

Page 36: TestData Builder(( - Entwicklertag · private static Order createOrderWithValueOf(double value) { return createOrder(value, true, thisYear()); } private static Order createOrderFromThisYearWithValue

private static Order createOrderWithValueOf(double value) { return createOrder(value, true, thisYear());}private static Order createOrderFromThisYearWithValue(double value) {

return createOrder(value, true, thisYear());}private static Order createOrderFromLastYearWithValue(double value) {

return createOrder(value, true, lastYear());}private static Order createOrderWithPaymentDeficitAndValueOf(double value) { return createOrder(value, false, thisYear());}private static Order createOrderWithPaymentDeficitFromLastYearWithValueOf

(double value) {return createOrder(1000, false, lastYear());

}

Page 37: TestData Builder(( - Entwicklertag · private static Order createOrderWithValueOf(double value) { return createOrder(value, true, thisYear()); } private static Order createOrderFromThisYearWithValue

„Separate  the  construc,on  of  a  complex  object  from  its  representa,on  so  that  the  same  construc5on  process  can  create  different  representa5ons.“    

Page 38: TestData Builder(( - Entwicklertag · private static Order createOrderWithValueOf(double value) { return createOrder(value, true, thisYear()); } private static Order createOrderFromThisYearWithValue
Page 39: TestData Builder(( - Entwicklertag · private static Order createOrderWithValueOf(double value) { return createOrder(value, true, thisYear()); } private static Order createOrderFromThisYearWithValue

einfacher    Test-­‐Data  Builder  

Page 40: TestData Builder(( - Entwicklertag · private static Order createOrderWithValueOf(double value) { return createOrder(value, true, thisYear()); } private static Order createOrderFromThisYearWithValue

@Test public void a_customer_with_a_score_of_4_can_pay_in_advance_and_on_delivery() {

aCustomer.addOrder(createOrderWithValueOf(4000));assertThat(aCustomer.getPossiblePaymentMethods(), containsInAnyOrder( PaymentMethod.prepayment, PaymentMethod.cashOnDelivery ));

}

Page 41: TestData Builder(( - Entwicklertag · private static Order createOrderWithValueOf(double value) { return createOrder(value, true, thisYear()); } private static Order createOrderFromThisYearWithValue

@Test public void a_customer_with_a_score_of_4_can_pay_in_advance_and_on_delivery() {

aCustomer.addOrder(createOrderWithValueOf(4000));assertThat(aCustomer.getPossiblePaymentMethods(), containsInAnyOrder( PaymentMethod.prepayment, PaymentMethod.cashOnDelivery ));

}

Page 42: TestData Builder(( - Entwicklertag · private static Order createOrderWithValueOf(double value) { return createOrder(value, true, thisYear()); } private static Order createOrderFromThisYearWithValue

@Test public void a_customer_with_a_score_of_4_can_pay_in_advance_and_on_delivery() {

aCustomer = new CustomerBuilder() .withScore(4) .build();

assertThat(aCustomer.getPossiblePaymentMethods(), containsInAnyOrder( PaymentMethod.prepayment, PaymentMethod.cashOnDelivery ));

}

Page 43: TestData Builder(( - Entwicklertag · private static Order createOrderWithValueOf(double value) { return createOrder(value, true, thisYear()); } private static Order createOrderFromThisYearWithValue

@Test public void a_customer_with_a_score_of_4_can_pay_in_advance_and_on_delivery() {

aCustomer = new CustomerBuilder() .withScore(4) .build();

assertThat(aCustomer.getPossiblePaymentMethods(), containsInAnyOrder( PaymentMethod.prepayment, PaymentMethod.cashOnDelivery ));

}

Page 44: TestData Builder(( - Entwicklertag · private static Order createOrderWithValueOf(double value) { return createOrder(value, true, thisYear()); } private static Order createOrderFromThisYearWithValue

@Test public void a_customer_with_a_score_of_4_can_pay_in_advance_and_on_delivery() {

aCustomer = new CustomerBuilder() .withScore(4) .build();

assertThat(aCustomer.getPossiblePaymentMethods(), containsInAnyOrder( PaymentMethod.prepayment, PaymentMethod.cashOnDelivery ));

}

Page 45: TestData Builder(( - Entwicklertag · private static Order createOrderWithValueOf(double value) { return createOrder(value, true, thisYear()); } private static Order createOrderFromThisYearWithValue

@Test public void a_customer_with_a_score_of_4_can_pay_in_advance_and_on_delivery() {

aCustomer = new CustomerBuilder() .withScore(4) .build();

assertThat(aCustomer.getPossiblePaymentMethods(), containsInAnyOrder( PaymentMethod.prepayment, PaymentMethod.cashOnDelivery ));

}

Page 46: TestData Builder(( - Entwicklertag · private static Order createOrderWithValueOf(double value) { return createOrder(value, true, thisYear()); } private static Order createOrderFromThisYearWithValue

@Test public void a_customer_with_a_score_of_4_can_pay_in_advance_and_on_delivery() {

aCustomer = new CustomerBuilder() .withScore(4) .build();

assertThat(aCustomer.getPossiblePaymentMethods(), containsInAnyOrder( PaymentMethod.prepayment, PaymentMethod.cashOnDelivery ));

}

Page 47: TestData Builder(( - Entwicklertag · private static Order createOrderWithValueOf(double value) { return createOrder(value, true, thisYear()); } private static Order createOrderFromThisYearWithValue

Customer  Builder  

Page 48: TestData Builder(( - Entwicklertag · private static Order createOrderWithValueOf(double value) { return createOrder(value, true, thisYear()); } private static Order createOrderFromThisYearWithValue

@Test public void a_customer_with_a_score_of_4_can_pay_in_advance_and_on_delivery() {

aCustomer = new CustomerBuilder() .withScore(4) .build();

assertThat(aCustomer.getPossiblePaymentMethods(), containsInAnyOrder( PaymentMethod.prepayment, PaymentMethod.cashOnDelivery ));

}

Page 49: TestData Builder(( - Entwicklertag · private static Order createOrderWithValueOf(double value) { return createOrder(value, true, thisYear()); } private static Order createOrderFromThisYearWithValue

@Test public void a_customer_with_a_score_of_4_can_pay_in_advance_and_on_delivery() {

aCustomer = new CustomerBuilder() .withScore(4) .build();

assertThat(aCustomer.getPossiblePaymentMethods(), containsInAnyOrder( PaymentMethod.prepayment, PaymentMethod.cashOnDelivery ));

}

Page 50: TestData Builder(( - Entwicklertag · private static Order createOrderWithValueOf(double value) { return createOrder(value, true, thisYear()); } private static Order createOrderFromThisYearWithValue

public class CustomerBuilder { private Customer innerCustomer; public CustomerBuilder() { Address aAddress = new Address("Meisenstrasse 96", "33607", "BI"); innerCustomer = new Customer("Mustermann AG", aAddress); }

public CustomerBuilder withName(String name){

innerCustomer.setName(name); return this; } public CustomerBuilder withScore(int score) { Order order = new Order(); order.setValue(score*1000); order.setPayed(true); order.setOrderDate(new Date()); innerCustomer.addOrder(order); return this; } public Customer build() { return innerCustomer; } }

Page 51: TestData Builder(( - Entwicklertag · private static Order createOrderWithValueOf(double value) { return createOrder(value, true, thisYear()); } private static Order createOrderFromThisYearWithValue

public class CustomerBuilder { private Customer innerCustomer; public CustomerBuilder() { Address aAddress = new Address("Meisenstrasse 96", "33607", "BI"); innerCustomer = new Customer("Mustermann AG", aAddress); }

public CustomerBuilder withName(String name){

innerCustomer.setName(name); return this; } public CustomerBuilder withScore(int score) { Order order = new Order(); order.setValue(score*1000); order.setPayed(true); order.setOrderDate(new Date()); innerCustomer.addOrder(order); return this; } public Customer build() { return innerCustomer; } }

Page 52: TestData Builder(( - Entwicklertag · private static Order createOrderWithValueOf(double value) { return createOrder(value, true, thisYear()); } private static Order createOrderFromThisYearWithValue

public class CustomerBuilder { private Customer innerCustomer; public CustomerBuilder() { Address aAddress = new Address("Meisenstrasse 96", "33607", "BI"); innerCustomer = new Customer("Mustermann AG", aAddress); }

public CustomerBuilder withName(String name){

innerCustomer.setName(name); return this; } public CustomerBuilder withScore(int score) { Order order = new Order(); order.setValue(score*1000); order.setPayed(true); order.setOrderDate(new Date()); innerCustomer.addOrder(order); return this; } public Customer build() { return innerCustomer; } }

Page 53: TestData Builder(( - Entwicklertag · private static Order createOrderWithValueOf(double value) { return createOrder(value, true, thisYear()); } private static Order createOrderFromThisYearWithValue

public class CustomerBuilder { private Customer innerCustomer; public CustomerBuilder() { Address aAddress = new Address("Meisenstrasse 96", "33607", "BI"); innerCustomer = new Customer("Mustermann AG", aAddress); }

public CustomerBuilder withName(String name){

innerCustomer.setName(name); return this; } public CustomerBuilder withScore(int score) { Order order = new Order(); order.setValue(score*1000); order.setPayed(true); order.setOrderDate(new Date()); innerCustomer.addOrder(order); return this; } public Customer build() { return innerCustomer; } }

Page 54: TestData Builder(( - Entwicklertag · private static Order createOrderWithValueOf(double value) { return createOrder(value, true, thisYear()); } private static Order createOrderFromThisYearWithValue

public class CustomerBuilder { private Customer innerCustomer; public CustomerBuilder() { Address aAddress = new Address("Meisenstrasse 96", "33607", "BI"); innerCustomer = new Customer("Mustermann AG", aAddress); }

public CustomerBuilder withName(String name){

innerCustomer.setName(name); return this; } public CustomerBuilder withScore(int score) { Order order = new Order(); order.setValue(score*1000); order.setPayed(true); order.setOrderDate(new Date()); innerCustomer.addOrder(order); return this; } public Customer build() { return innerCustomer; } }

Page 55: TestData Builder(( - Entwicklertag · private static Order createOrderWithValueOf(double value) { return createOrder(value, true, thisYear()); } private static Order createOrderFromThisYearWithValue

public class CustomerBuilder { private Customer innerCustomer; public CustomerBuilder() { Address aAddress = new Address("Meisenstrasse 96", "33607", "BI"); innerCustomer = new Customer("Mustermann AG", aAddress); }

public CustomerBuilder withName(String name){

innerCustomer.setName(name); return this; } public CustomerBuilder withScore(int score) { Order order = new Order(); order.setValue(score*1000); order.setPayed(true); order.setOrderDate(new Date()); innerCustomer.addOrder(order); return this; } public Customer build() { return innerCustomer; } }

Page 56: TestData Builder(( - Entwicklertag · private static Order createOrderWithValueOf(double value) { return createOrder(value, true, thisYear()); } private static Order createOrderFromThisYearWithValue

public class CustomerBuilder { private Customer innerCustomer; public CustomerBuilder() { Address aAddress = new Address("Meisenstrasse 96", "33607", "BI"); innerCustomer = new Customer("Mustermann AG", aAddress); }

public CustomerBuilder withName(String name){

innerCustomer.setName(name); return this; } public CustomerBuilder withScore(int score) { Order order = new Order(); order.setValue(score*1000); order.setPayed(true); order.setOrderDate(new Date()); innerCustomer.addOrder(order); return this; } public Customer build() { return innerCustomer; } }

Page 57: TestData Builder(( - Entwicklertag · private static Order createOrderWithValueOf(double value) { return createOrder(value, true, thisYear()); } private static Order createOrderFromThisYearWithValue

public class CustomerBuilder { private Customer innerCustomer; public CustomerBuilder() { Address aAddress = new Address("Meisenstrasse 96", "33607", "BI"); innerCustomer = new Customer("Mustermann AG", aAddress); }

public CustomerBuilder withName(String name){

innerCustomer.setName(name); return this; } public CustomerBuilder withScore(int score) { Order order = new Order(); order.setValue(score*1000); order.setPayed(true); order.setOrderDate(new Date()); innerCustomer.addOrder(order); return this; } public Customer build() { return innerCustomer; } }

Page 58: TestData Builder(( - Entwicklertag · private static Order createOrderWithValueOf(double value) { return createOrder(value, true, thisYear()); } private static Order createOrderFromThisYearWithValue

public class CustomerBuilder { private Customer innerCustomer; public CustomerBuilder() { Address aAddress = new Address("Meisenstrasse 96", "33607", "BI"); innerCustomer = new Customer("Mustermann AG", aAddress); }

public CustomerBuilder withName(String name){

innerCustomer.setName(name); return this; } public CustomerBuilder withScore(int score) { Order order = new Order(); order.setValue(score*1000); order.setPayed(true); order.setOrderDate(new Date()); innerCustomer.addOrder(order); return this; } public Customer build() { return innerCustomer; } }

Page 59: TestData Builder(( - Entwicklertag · private static Order createOrderWithValueOf(double value) { return createOrder(value, true, thisYear()); } private static Order createOrderFromThisYearWithValue

public class CustomerBuilder { private Customer innerCustomer; public CustomerBuilder() { Address aAddress = new Address("Meisenstrasse 96", "33607", "BI"); innerCustomer = new Customer("Mustermann AG", aAddress); }

public CustomerBuilder withName(String name){

innerCustomer.setName(name); return this; } public CustomerBuilder withScore(int score) { Order order = new Order(); order.setValue(score*1000); order.setPayed(true); order.setOrderDate(new Date()); innerCustomer.addOrder(order); return this; } public Customer build() { return innerCustomer; } }

Page 60: TestData Builder(( - Entwicklertag · private static Order createOrderWithValueOf(double value) { return createOrder(value, true, thisYear()); } private static Order createOrderFromThisYearWithValue

public class CustomerBuilder { private Customer innerCustomer; public CustomerBuilder() { Address aAddress = new Address("Meisenstrasse 96", "33607", "BI"); innerCustomer = new Customer("Mustermann AG", aAddress); }

public CustomerBuilder withName(String name){

innerCustomer.setName(name); return this; } public CustomerBuilder withScore(int score) { Order order = new Order(); order.setValue(score*1000); order.setPayed(true); order.setOrderDate(new Date()); innerCustomer.addOrder(order); return this; } public Customer build() { return innerCustomer; } }

Page 61: TestData Builder(( - Entwicklertag · private static Order createOrderWithValueOf(double value) { return createOrder(value, true, thisYear()); } private static Order createOrderFromThisYearWithValue

public class CustomerBuilder { private Customer innerCustomer; public CustomerBuilder() { Address aAddress = new Address("Meisenstrasse 96", "33607", "BI"); innerCustomer = new Customer("Mustermann AG", aAddress); }

public CustomerBuilder withName(String name){

innerCustomer.setName(name); return this; } public CustomerBuilder withScore(int score) { Order order = new Order(); order.setValue(score*1000); order.setPayed(true); order.setOrderDate(new Date()); innerCustomer.addOrder(order); return this; } public Customer build() { return innerCustomer; } }

Page 62: TestData Builder(( - Entwicklertag · private static Order createOrderWithValueOf(double value) { return createOrder(value, true, thisYear()); } private static Order createOrderFromThisYearWithValue

kombinierte  Test-­‐Data  Builder  

Page 63: TestData Builder(( - Entwicklertag · private static Order createOrderWithValueOf(double value) { return createOrder(value, true, thisYear()); } private static Order createOrderFromThisYearWithValue

@Test public void the_score_should_be_one_with_a_single_1k_order() { aCustomer = new CustomerBuilder() .with( new OrderBuilder() .withValue(1000)) .build();

assertThat(aCustomer.getScore(), is(1));}

Page 64: TestData Builder(( - Entwicklertag · private static Order createOrderWithValueOf(double value) { return createOrder(value, true, thisYear()); } private static Order createOrderFromThisYearWithValue

@Test public void the_score_should_be_one_with_a_single_1k_order() { aCustomer = new CustomerBuilder() .with( new OrderBuilder() .withValue(1000)) .build();

assertThat(aCustomer.getScore(), is(1));}

Page 65: TestData Builder(( - Entwicklertag · private static Order createOrderWithValueOf(double value) { return createOrder(value, true, thisYear()); } private static Order createOrderFromThisYearWithValue

@Test public void the_score_should_be_one_with_a_single_1k_order() { aCustomer = new CustomerBuilder() .with( new OrderBuilder() .withValue(1000)) .build();

assertThat(aCustomer.getScore(), is(1)); }

Page 66: TestData Builder(( - Entwicklertag · private static Order createOrderWithValueOf(double value) { return createOrder(value, true, thisYear()); } private static Order createOrderFromThisYearWithValue

@Test public void the_score_should_be_one_with_a_single_1k_order() { aCustomer = new CustomerBuilder() .with( new OrderBuilder() .withValue(1000)) .build();

assertThat(aCustomer.getScore(), is(1)); }public class CustomerBuilder { private Customer innerCustomer;

...public CustomerBuilder with(OrderBuilder order) {

innerCustomer.addOrder( order.build()

); return this; }}

Page 67: TestData Builder(( - Entwicklertag · private static Order createOrderWithValueOf(double value) { return createOrder(value, true, thisYear()); } private static Order createOrderFromThisYearWithValue

@Test public void the_score_should_be_one_with_a_single_1k_order() { aCustomer = new CustomerBuilder() .with( new OrderBuilder() .withValue(1000)) .build();

assertThat(aCustomer.getScore(), is(1)); }public class CustomerBuilder { private Customer innerCustomer;

...public CustomerBuilder with(OrderBuilder order) {

innerCustomer.addOrder( order.build()

); return this; }}

Page 68: TestData Builder(( - Entwicklertag · private static Order createOrderWithValueOf(double value) { return createOrder(value, true, thisYear()); } private static Order createOrderFromThisYearWithValue

@Test public void the_score_should_be_one_with_a_single_1k_order() { aCustomer = new CustomerBuilder() .with( new OrderBuilder() .withValue(1000)) .build();

assertThat(aCustomer.getScore(), is(1)); }public class CustomerBuilder { private Customer innerCustomer;

...public CustomerBuilder with(OrderBuilder order) {

innerCustomer.addOrder( order.build()

); return this; }}

Page 69: TestData Builder(( - Entwicklertag · private static Order createOrderWithValueOf(double value) { return createOrder(value, true, thisYear()); } private static Order createOrderFromThisYearWithValue

@Test public void the_score_should_be_one_with_a_single_1k_order() { aCustomer = new CustomerBuilder() .with( new OrderBuilder() .withValue(1000)) .build();

assertThat(aCustomer.getScore(), is(1)); }public class CustomerBuilder { private Customer innerCustomer;

...public CustomerBuilder with(OrderBuilder order) {

innerCustomer.addOrder( order.build()

); return this; }}

Page 70: TestData Builder(( - Entwicklertag · private static Order createOrderWithValueOf(double value) { return createOrder(value, true, thisYear()); } private static Order createOrderFromThisYearWithValue

@Test public void the_score_should_be_one_with_a_single_1k_order() { aCustomer = new CustomerBuilder() .with( new OrderBuilder() .withValue(1000)) .build();

assertThat(aCustomer.getScore(), is(1)); }public class CustomerBuilder { private Customer innerCustomer;

...public CustomerBuilder with(OrderBuilder order) {

innerCustomer.addOrder( order.build()

); return this; }}

Page 71: TestData Builder(( - Entwicklertag · private static Order createOrderWithValueOf(double value) { return createOrder(value, true, thisYear()); } private static Order createOrderFromThisYearWithValue

@Test public void the_score_should_be_one_with_a_single_1k_order() { aCustomer = new CustomerBuilder() .with( new OrderBuilder() .withValue(1000)) .build();

assertThat(aCustomer.getScore(), is(1)); }public class CustomerBuilder { private Customer innerCustomer;

...public CustomerBuilder with(OrderBuilder order) {

innerCustomer.addOrder( order.build()

); return this; }}

Page 72: TestData Builder(( - Entwicklertag · private static Order createOrderWithValueOf(double value) { return createOrder(value, true, thisYear()); } private static Order createOrderFromThisYearWithValue

OrderBuilder  by  the  book  

Page 73: TestData Builder(( - Entwicklertag · private static Order createOrderWithValueOf(double value) { return createOrder(value, true, thisYear()); } private static Order createOrderFromThisYearWithValue

public class OrderBuilder {private double value = 1000;private Date orderDate = thisYear();private boolean payed = true;

public OrderBuilder() { } public OrderBuilder withValue(double value) { this.value = value; return this; } public OrderBuilder withPaymentDefictit() { payed = false; return this; } public Order build() { Order order= new Order();

order.setOrderDate(orderDate); order.setPayed(payed); order.setValue(value); return order; }

Page 74: TestData Builder(( - Entwicklertag · private static Order createOrderWithValueOf(double value) { return createOrder(value, true, thisYear()); } private static Order createOrderFromThisYearWithValue

public class OrderBuilder {private double value = 1000;private Date orderDate = thisYear();private boolean payed = true;

public OrderBuilder() { } public OrderBuilder withValue(double value) { this.value = value; return this; } public OrderBuilder withPaymentDefictit() { payed = false; return this; } public Order build() { Order order= new Order();

order.setOrderDate(orderDate); order.setPayed(payed); order.setValue(value); return order; }

Page 75: TestData Builder(( - Entwicklertag · private static Order createOrderWithValueOf(double value) { return createOrder(value, true, thisYear()); } private static Order createOrderFromThisYearWithValue

public class OrderBuilder {private double value = 1000;private Date orderDate = thisYear();private boolean payed = true;

public OrderBuilder() { } public OrderBuilder withValue(double value) { this.value = value; return this; } public OrderBuilder withPaymentDefictit() { payed = false; return this; } public Order build() { Order order= new Order();

order.setOrderDate(orderDate); order.setPayed(payed); order.setValue(value); return order; }

Page 76: TestData Builder(( - Entwicklertag · private static Order createOrderWithValueOf(double value) { return createOrder(value, true, thisYear()); } private static Order createOrderFromThisYearWithValue

public class OrderBuilder {private double value = 1000;private Date orderDate = thisYear();private boolean payed = true;

public OrderBuilder() { } public OrderBuilder withValue(double value) { this.value = value; return this; } public OrderBuilder withPaymentDefictit() { payed = false; return this; } public Order build() { Order order= new Order();

order.setOrderDate(orderDate); order.setPayed(payed); order.setValue(value); return order; }

Page 77: TestData Builder(( - Entwicklertag · private static Order createOrderWithValueOf(double value) { return createOrder(value, true, thisYear()); } private static Order createOrderFromThisYearWithValue

public class OrderBuilder {private double value = 1000;private Date orderDate = thisYear();private boolean payed = true;

public OrderBuilder() { } public OrderBuilder withValue(double value) { this.value = value; return this; } public OrderBuilder withPaymentDefictit() { payed = false; return this; } public Order build() { Order order= new Order();

order.setOrderDate(orderDate); order.setPayed(payed); order.setValue(value); return order; }

Page 78: TestData Builder(( - Entwicklertag · private static Order createOrderWithValueOf(double value) { return createOrder(value, true, thisYear()); } private static Order createOrderFromThisYearWithValue

 OrderBuilder  mit  innerOrder  

Page 79: TestData Builder(( - Entwicklertag · private static Order createOrderWithValueOf(double value) { return createOrder(value, true, thisYear()); } private static Order createOrderFromThisYearWithValue

public class OrderBuilder { private Order innerOrder; public OrderBuilder() { innerOrder = new Order(); innerOrder.setOrderDate(thisYear()); innerOrder.setPayed(true); innerOrder.setValue(1000); } public OrderBuilder withValue(double value) { innerOrder.setValue(value); return this; } public OrderBuilder withPaymentDefictit() { innerOrder.setPayed(false); return this; } public Order build() { return innerOrder; }}

Page 80: TestData Builder(( - Entwicklertag · private static Order createOrderWithValueOf(double value) { return createOrder(value, true, thisYear()); } private static Order createOrderFromThisYearWithValue

public class OrderBuilder { private Order innerOrder; public OrderBuilder() { innerOrder = new Order(); innerOrder.setOrderDate(thisYear()); innerOrder.setPayed(true); innerOrder.setValue(1000); } public OrderBuilder withValue(double value) { innerOrder.setValue(value); return this; } public OrderBuilder withPaymentDefictit() { innerOrder.setPayed(false); return this; } public Order build() { return innerOrder; }}

Page 81: TestData Builder(( - Entwicklertag · private static Order createOrderWithValueOf(double value) { return createOrder(value, true, thisYear()); } private static Order createOrderFromThisYearWithValue

public class OrderBuilder { private Order innerOrder; public OrderBuilder() { innerOrder = new Order(); innerOrder.setOrderDate(thisYear()); innerOrder.setPayed(true); innerOrder.setValue(1000); } public OrderBuilder withValue(double value) { innerOrder.setValue(value); return this; } public OrderBuilder withPaymentDefictit() { innerOrder.setPayed(false); return this; } public Order build() { return innerOrder; }}

Page 82: TestData Builder(( - Entwicklertag · private static Order createOrderWithValueOf(double value) { return createOrder(value, true, thisYear()); } private static Order createOrderFromThisYearWithValue

public class OrderBuilder { private Order innerOrder; public OrderBuilder() { innerOrder = new Order(); innerOrder.setOrderDate(thisYear()); innerOrder.setPayed(true); innerOrder.setValue(1000); } public OrderBuilder withValue(double value) { innerOrder.setValue(value); return this; } public OrderBuilder withPaymentDefictit() { innerOrder.setPayed(false); return this; } public Order build() { return innerOrder; }}

Page 83: TestData Builder(( - Entwicklertag · private static Order createOrderWithValueOf(double value) { return createOrder(value, true, thisYear()); } private static Order createOrderFromThisYearWithValue

public class OrderBuilder { private Order innerOrder; public OrderBuilder() { innerOrder = new Order(); innerOrder.setOrderDate(thisYear()); innerOrder.setPayed(true); innerOrder.setValue(1000); } public OrderBuilder withValue(double value) { innerOrder.setValue(value); return this; } public OrderBuilder withPaymentDefictit() { innerOrder.setPayed(false); return this; } public Order build() { return innerOrder; }}

Page 84: TestData Builder(( - Entwicklertag · private static Order createOrderWithValueOf(double value) { return createOrder(value, true, thisYear()); } private static Order createOrderFromThisYearWithValue

Test-­‐Data  Builder  

mit  Factories  

Page 85: TestData Builder(( - Entwicklertag · private static Order createOrderWithValueOf(double value) { return createOrder(value, true, thisYear()); } private static Order createOrderFromThisYearWithValue

@Test public void the_score_should_be_two_with_two_1k_orders() { aCustomer = new CustomerBuilder() .with( anOrder() .withValue(1000) ) .with( anOrder() .withValue(1000) ) .build(); assertThat(aCustomer.getScore(), is(2)); }

Page 86: TestData Builder(( - Entwicklertag · private static Order createOrderWithValueOf(double value) { return createOrder(value, true, thisYear()); } private static Order createOrderFromThisYearWithValue

@Test public void the_score_should_be_two_with_two_1k_orders() { aCustomer = new CustomerBuilder() .with( anOrder() .withValue(1000) ) .with( anOrder() .withValue(1000) ) .build(); assertThat(aCustomer.getScore(), is(2)); }

Page 87: TestData Builder(( - Entwicklertag · private static Order createOrderWithValueOf(double value) { return createOrder(value, true, thisYear()); } private static Order createOrderFromThisYearWithValue

@Test public void the_score_should_be_two_with_two_1k_orders() { aCustomer = aCustomer() .with( anOrder() .withValue(1000) ) .with( anOrder() .withValue(1000) ) .build(); assertThat(aCustomer.getScore(), is(2)); }

Page 88: TestData Builder(( - Entwicklertag · private static Order createOrderWithValueOf(double value) { return createOrder(value, true, thisYear()); } private static Order createOrderFromThisYearWithValue

@Test public void the_score_should_be_two_with_two_1k_orders() { aCustomer = aCustomer() .with( anOrder() .withValue(1000) ) .with( anOrder() .withValue(1000) ) .build(); assertThat(aCustomer.getScore(), is(2)); } public static CustomerBuilder aCustomer() { return new CustomerBuilder(); }

Page 89: TestData Builder(( - Entwicklertag · private static Order createOrderWithValueOf(double value) { return createOrder(value, true, thisYear()); } private static Order createOrderFromThisYearWithValue

@Test public void the_score_should_be_two_with_two_1k_orders() { aCustomer = aCustomer() .with( anOrder() .withValue(1000) ) .with( anOrder() .withValue(1000) ) .build(); assertThat(aCustomer.getScore(), is(2)); } public static CustomerBuilder aCustomer() { return new CustomerBuilder(); }

Page 90: TestData Builder(( - Entwicklertag · private static Order createOrderWithValueOf(double value) { return createOrder(value, true, thisYear()); } private static Order createOrderFromThisYearWithValue

@Test public void the_score_should_be_two_with_two_1k_orders() { aCustomer = aCustomer() .with( anOrder() .withValue(1000) ) .with( anOrder() .withValue(1000) ) .build(); assertThat(aCustomer.getScore(), is(2)); } public static CustomerBuilder aCustomer() { return new CustomerBuilder(); } public static OrderBuilder anOrder() { return new OrderBuilder(); }

Page 91: TestData Builder(( - Entwicklertag · private static Order createOrderWithValueOf(double value) { return createOrder(value, true, thisYear()); } private static Order createOrderFromThisYearWithValue

@Test public void the_score_should_be_two_with_two_1k_orders() { aCustomer = aCustomer() .with( anOrder() .withValue(1000) ) .with( anOrder() .withValue(1000) ) .build(); assertThat(aCustomer.getScore(), is(2)); } public static CustomerBuilder aCustomer() { return new CustomerBuilder(); } public static OrderBuilder anOrder() { return new OrderBuilder(); }

Page 92: TestData Builder(( - Entwicklertag · private static Order createOrderWithValueOf(double value) { return createOrder(value, true, thisYear()); } private static Order createOrderFromThisYearWithValue

@Test public void the_score_should_be_two_with_two_1k_orders() { aCustomer = aCustomer() .with( anOrder() .withValue(1000) ) .with( anOrder() .withValue(1000) ) .build(); assertThat(aCustomer.getScore(), is(2)); } public static CustomerBuilder aCustomer() { return new CustomerBuilder(); } public static OrderBuilder anOrder() { return new OrderBuilder(); }

Page 93: TestData Builder(( - Entwicklertag · private static Order createOrderWithValueOf(double value) { return createOrder(value, true, thisYear()); } private static Order createOrderFromThisYearWithValue

@Test public void the_score_should_be_two_with_two_1k_orders() { aCustomer = aCustomer() .with( anOrder() .withValue(1000) ) .with( anOrder() .withValue(1000) ) .build(); assertThat(aCustomer.getScore(), is(2)); } public static CustomerBuilder aCustomer() { return new CustomerBuilder(); } public static OrderBuilder anOrder() { return new OrderBuilder(); }

Page 94: TestData Builder(( - Entwicklertag · private static Order createOrderWithValueOf(double value) { return createOrder(value, true, thisYear()); } private static Order createOrderFromThisYearWithValue

Reduce  noise  

Page 95: TestData Builder(( - Entwicklertag · private static Order createOrderWithValueOf(double value) { return createOrder(value, true, thisYear()); } private static Order createOrderFromThisYearWithValue

private Customer aCustomer; @Test public void the_score_should_be_one_with_a_single_1k_order() { aCustomer = aCustomer() .with( anOrder() .withValue(1000)

) .build(); assertThat(aCustomer.getScore(), is(1));

}

Page 96: TestData Builder(( - Entwicklertag · private static Order createOrderWithValueOf(double value) { return createOrder(value, true, thisYear()); } private static Order createOrderFromThisYearWithValue

private Customer aCustomer; @Test public void the_score_should_be_one_with_a_single_1k_order() { aCustomer = aCustomer() .with( anOrder() .withValue(1000)

) .build(); assertThat(aCustomer.getScore(), is(1));

}

Page 97: TestData Builder(( - Entwicklertag · private static Order createOrderWithValueOf(double value) { return createOrder(value, true, thisYear()); } private static Order createOrderFromThisYearWithValue

private Customer aCustomer; @Test public void the_score_should_be_one_with_a_single_1k_order() { aCustomer = aCustomer() .with( anOrder() .withValue(1000)

) .build(); assertThat(aCustomer.getScore(), is(1));

}

Page 98: TestData Builder(( - Entwicklertag · private static Order createOrderWithValueOf(double value) { return createOrder(value, true, thisYear()); } private static Order createOrderFromThisYearWithValue

private CustomerBuilder aCustomer; @Test public void the_score_should_be_one_with_a_single_1k_order() { aCustomer = aCustomer() .with( anOrder() .withValue(1000)

) .build(); assertThat(aCustomer.getScore(), is(1));

}

Page 99: TestData Builder(( - Entwicklertag · private static Order createOrderWithValueOf(double value) { return createOrder(value, true, thisYear()); } private static Order createOrderFromThisYearWithValue

private CustomerBuilder aCustomer; @Test public void the_score_should_be_one_with_a_single_1k_order() { aCustomer = aCustomer() .with( anOrder() .withValue(1000)

) .build(); assertThat(aCustomer.getScore(), is(1));

}

Page 100: TestData Builder(( - Entwicklertag · private static Order createOrderWithValueOf(double value) { return createOrder(value, true, thisYear()); } private static Order createOrderFromThisYearWithValue

private CustomerBuilder aCustomer; @Test public void the_score_should_be_one_with_a_single_1k_order() { aCustomer = aCustomer() .with( anOrder() .withValue(1000)

); assertThat(aCustomer.getScore(), is(1));}

Page 101: TestData Builder(( - Entwicklertag · private static Order createOrderWithValueOf(double value) { return createOrder(value, true, thisYear()); } private static Order createOrderFromThisYearWithValue

private CustomerBuilder aCustomer; @Test public void the_score_should_be_one_with_a_single_1k_order() { aCustomer = aCustomer() .with( anOrder() .withValue(1000)

); assertThat(aCustomer.build().getScore(), is(1));}

Page 102: TestData Builder(( - Entwicklertag · private static Order createOrderWithValueOf(double value) { return createOrder(value, true, thisYear()); } private static Order createOrderFromThisYearWithValue

private CustomerBuilder aCustomer; @Test public void the_score_should_be_one_with_a_single_1k_order() { aCustomer = aCustomer() .with( anOrder() .withValue(1000)

); assertThat(aCustomer.build().getScore(), is(1)); assertThat(aCustomer.getScore(), is(1));}

Page 103: TestData Builder(( - Entwicklertag · private static Order createOrderWithValueOf(double value) { return createOrder(value, true, thisYear()); } private static Order createOrderFromThisYearWithValue

private CustomerBuilder aCustomer; @Test public void the_score_should_be_one_with_a_single_1k_order() { aCustomer = aCustomer() .with( anOrder() .withValue(1000)

); assertThat(aCustomer.build().getScore(), is(1)); assertThat(aCustomer.getScore(), is(1));}

public class CustomerBuilder {

...public int getScore() { return build().getScore();}

}

Page 104: TestData Builder(( - Entwicklertag · private static Order createOrderWithValueOf(double value) { return createOrder(value, true, thisYear()); } private static Order createOrderFromThisYearWithValue

private CustomerBuilder aCustomer; @Test public void the_score_should_be_one_with_a_single_1k_order() { aCustomer = aCustomer() .with( anOrder() .withValue(1000)

); assertThat(aCustomer.build().getScore(), is(1)); assertThat(aCustomer.getScore(), is(1));}

public class CustomerBuilder {

...public int getScore() { return build().getScore();}

}

Page 105: TestData Builder(( - Entwicklertag · private static Order createOrderWithValueOf(double value) { return createOrder(value, true, thisYear()); } private static Order createOrderFromThisYearWithValue

private CustomerBuilder aCustomer; @Test public void the_score_should_be_one_with_a_single_1k_order() { aCustomer = aCustomer() .with( anOrder() .withValue(1000)

); assertThat(aCustomer.build().getScore(), is(1)); assertThat(aCustomer.getScore(), is(1));}

public class CustomerBuilder {

...public int getScore() { return build().getScore();}

}

Page 106: TestData Builder(( - Entwicklertag · private static Order createOrderWithValueOf(double value) { return createOrder(value, true, thisYear()); } private static Order createOrderFromThisYearWithValue

private CustomerBuilder aCustomer; @Test public void the_score_should_be_one_with_a_single_1k_order() { aCustomer = aCustomer() .with( anOrder() .withValue(1000)

); assertThat(aCustomer.build().getScore(), is(1)); assertThat(aCustomer.getScore(), is(1));}

Page 107: TestData Builder(( - Entwicklertag · private static Order createOrderWithValueOf(double value) { return createOrder(value, true, thisYear()); } private static Order createOrderFromThisYearWithValue

private CustomerBuilder aCustomer; @Test public void the_score_should_be_one_with_a_single_1k_order() { aCustomer = aCustomer() .with( anOrder() .withValue(1000)

); assertThat(aCustomer.build().getScore(), is(1)); assertThat(aCustomer.getScore(), is(1)); assertThat(score(aCustomer), is(1));}

Page 108: TestData Builder(( - Entwicklertag · private static Order createOrderWithValueOf(double value) { return createOrder(value, true, thisYear()); } private static Order createOrderFromThisYearWithValue

private CustomerBuilder aCustomer; @Test public void the_score_should_be_one_with_a_single_1k_order() { aCustomer = aCustomer() .with( anOrder() .withValue(1000)

); assertThat(aCustomer.build().getScore(), is(1)); assertThat(aCustomer.getScore(), is(1)); assertThat(score(aCustomer), is(1));}

private int score(CustomerBuilder customer){

return customer.build().getScore(); }

Page 109: TestData Builder(( - Entwicklertag · private static Order createOrderWithValueOf(double value) { return createOrder(value, true, thisYear()); } private static Order createOrderFromThisYearWithValue

private CustomerBuilder aCustomer; @Test public void the_score_should_be_one_with_a_single_1k_order() { aCustomer = aCustomer() .with( anOrder() .withValue(1000)

); assertThat(aCustomer.build().getScore(), is(1)); assertThat(aCustomer.getScore(), is(1)); assertThat(score(aCustomer), is(1));}

Page 110: TestData Builder(( - Entwicklertag · private static Order createOrderWithValueOf(double value) { return createOrder(value, true, thisYear()); } private static Order createOrderFromThisYearWithValue

private CustomerBuilder aCustomer; @Test public void the_score_should_be_one_with_a_single_1k_order() { aCustomer = aCustomer() .with( anOrder() .withValue(1000)

); assertThat(aCustomer.build().getScore(), is(1)); assertThat(aCustomer.getScore(), is(1)); assertThat(score(aCustomer), is(1)); assertScore(aCustomer, is(1));}

Page 111: TestData Builder(( - Entwicklertag · private static Order createOrderWithValueOf(double value) { return createOrder(value, true, thisYear()); } private static Order createOrderFromThisYearWithValue

private CustomerBuilder aCustomer; @Test public void the_score_should_be_one_with_a_single_1k_order() { aCustomer = aCustomer() .with( anOrder() .withValue(1000)

); assertThat(aCustomer.build().getScore(), is(1)); assertThat(aCustomer.getScore(), is(1)); assertThat(score(aCustomer), is(1)); assertScore(aCustomer, is(1));}

private void assertScore(CustomerBuilder customer, Matcher<Integer> matcher) {

assertThat(customer.build().getScore(), matcher);

}

Page 112: TestData Builder(( - Entwicklertag · private static Order createOrderWithValueOf(double value) { return createOrder(value, true, thisYear()); } private static Order createOrderFromThisYearWithValue

private CustomerBuilder aCustomer; @Test public void the_score_should_be_one_with_a_single_1k_order() { aCustomer = aCustomer() .with( anOrder() .withValue(1000)

); assertThat(aCustomer.build().getScore(), is(1)); assertThat(aCustomer.getScore(), is(1)); assertThat(score(aCustomer), is(1)); assertScore(aCustomer, is(1));}

Page 113: TestData Builder(( - Entwicklertag · private static Order createOrderWithValueOf(double value) { return createOrder(value, true, thisYear()); } private static Order createOrderFromThisYearWithValue

private CustomerBuilder aCustomer; @Test public void the_score_should_be_one_with_a_single_1k_order() { aCustomer = aCustomer() .with( anOrder() .withValue(1000)

); assertThat(aCustomer.build().getScore(), is(1)); assertThat(aCustomer.getScore(), is(1)); assertThat(score(aCustomer), is(1)); assertThatScoreOf(aCustomer, is(1));}

Page 114: TestData Builder(( - Entwicklertag · private static Order createOrderWithValueOf(double value) { return createOrder(value, true, thisYear()); } private static Order createOrderFromThisYearWithValue

private CustomerBuilder aCustomer; @Test public void the_score_should_be_one_with_a_single_1k_order() { aCustomer = aCustomer() .with( anOrder() .withValue(1000)

); assertThat(aCustomer.build().getScore(), is(1)); assertThat(aCustomer.getScore(), is(1)); assertThat(score(aCustomer), is(1)); assertThatScoreOf(aCustomer, is(1));}

Page 115: TestData Builder(( - Entwicklertag · private static Order createOrderWithValueOf(double value) { return createOrder(value, true, thisYear()); } private static Order createOrderFromThisYearWithValue

private CustomerBuilder aCustomer; @Test public void the_score_should_be_one_with_a_single_1k_order() { aCustomer = aCustomer() .with( anOrder() .withValue(1000)

); assertThat(aCustomer.build().getScore(), is(1)); assertThat(aCustomer.getScore(), is(1)); assertThat(scoreFor(aCustomer), is(1)); assertThatScoreOf(aCustomer, is(1));}

Page 116: TestData Builder(( - Entwicklertag · private static Order createOrderWithValueOf(double value) { return createOrder(value, true, thisYear()); } private static Order createOrderFromThisYearWithValue

private CustomerBuilder aCustomer; @Test public void the_score_should_be_one_with_a_single_1k_order() { aCustomer = aCustomer() .with( anOrder() .withValue(1000)

); assertThat(aCustomer.build().getScore(), is(1)); assertThat(aCustomer.getScore(), is(1)); assertThat(scoreFor(aCustomer), is(1)); assertThatScoreOf(aCustomer, is(1));}

Page 117: TestData Builder(( - Entwicklertag · private static Order createOrderWithValueOf(double value) { return createOrder(value, true, thisYear()); } private static Order createOrderFromThisYearWithValue

Copy  /  but  

Page 118: TestData Builder(( - Entwicklertag · private static Order createOrderWithValueOf(double value) { return createOrder(value, true, thisYear()); } private static Order createOrderFromThisYearWithValue

@Testpublic void two_orders_are_not_equal_when_value_is_not_equal() { OrderBuilder anOrder = new OrderBuilder() .withValue(1000) .withOrderDate("01.01.2014") .withIsPayed(true); OrderBuilder anotherOrder = anOrder .but().withValue(2000); assertThat(anOrder.build(), not(equalTo(anotherOrder.build())));}

Page 119: TestData Builder(( - Entwicklertag · private static Order createOrderWithValueOf(double value) { return createOrder(value, true, thisYear()); } private static Order createOrderFromThisYearWithValue

@Testpublic void two_orders_are_not_equal_when_value_is_not_equal() { OrderBuilder anOrder = new OrderBuilder() .withValue(1000) .withOrderDate("01.01.2014") .withIsPayed(true); OrderBuilder anotherOrder = anOrder .but().withValue(2000); assertThat(anOrder.build(), not(equalTo(anotherOrder.build())));}

Page 120: TestData Builder(( - Entwicklertag · private static Order createOrderWithValueOf(double value) { return createOrder(value, true, thisYear()); } private static Order createOrderFromThisYearWithValue

@Testpublic void two_orders_are_not_equal_when_value_is_not_equal() { OrderBuilder anOrder = new OrderBuilder() .withValue(1000) .withOrderDate("01.01.2014") .withIsPayed(true); OrderBuilder anotherOrder = anOrder .but().withValue(2000); assertThat(anOrder.build(), not(equalTo(anotherOrder.build())));}

Page 121: TestData Builder(( - Entwicklertag · private static Order createOrderWithValueOf(double value) { return createOrder(value, true, thisYear()); } private static Order createOrderFromThisYearWithValue

@Testpublic void two_orders_are_not_equal_when_value_is_not_equal() { OrderBuilder anOrder = new OrderBuilder() .withValue(1000) .withOrderDate("01.01.2014") .withIsPayed(true); OrderBuilder anotherOrder = anOrder .but().withValue(2000); assertThat(anOrder.build(), not(equalTo(anotherOrder.build())));}

public class OrderBuilder {

...public OrderBuilder but() {

return new OrderBuilder() .withValue(innerOrder.getValue()) .withIsPayed(innerOrder.isPayed()) .withOrderDate(innerOrder.getOrderDate()); }}

Page 122: TestData Builder(( - Entwicklertag · private static Order createOrderWithValueOf(double value) { return createOrder(value, true, thisYear()); } private static Order createOrderFromThisYearWithValue

@Testpublic void two_orders_are_not_equal_when_value_is_not_equal() { OrderBuilder anOrder = new OrderBuilder() .withValue(1000) .withOrderDate("01.01.2014") .withIsPayed(true); OrderBuilder anotherOrder = anOrder .but().withValue(2000); assertThat(anOrder.build(), not(equalTo(anotherOrder.build())));}

Page 123: TestData Builder(( - Entwicklertag · private static Order createOrderWithValueOf(double value) { return createOrder(value, true, thisYear()); } private static Order createOrderFromThisYearWithValue

@Testpublic void two_orders_are_not_equal_when_value_is_not_equal() { OrderBuilder anOrder = new OrderBuilder() .withValue(1000) .withOrderDate("01.01.2014") .withIsPayed(true); OrderBuilder anotherOrder = new OrderBuilder(anOrder) .withValue(2000); assertThat(anOrder.build(), not(equalTo(anotherOrder.build())));}

Page 124: TestData Builder(( - Entwicklertag · private static Order createOrderWithValueOf(double value) { return createOrder(value, true, thisYear()); } private static Order createOrderFromThisYearWithValue

h#p://flickr.com/photos/lucynieto/2854010435  

Page 125: TestData Builder(( - Entwicklertag · private static Order createOrderWithValueOf(double value) { return createOrder(value, true, thisYear()); } private static Order createOrderFromThisYearWithValue

Fazit  

Page 126: TestData Builder(( - Entwicklertag · private static Order createOrderWithValueOf(double value) { return createOrder(value, true, thisYear()); } private static Order createOrderFromThisYearWithValue

(Test)  Setup  vereinfacht    

Page 127: TestData Builder(( - Entwicklertag · private static Order createOrderWithValueOf(double value) { return createOrder(value, true, thisYear()); } private static Order createOrderFromThisYearWithValue

@Test public void a_customer_with_a_score_of_4_can_pay_in_advance_and_on_delivery() {

Address aAddress = new Address("Meisenstrasse 96", "33607", "Bielefeld");Customer aCustomer = new Customer("Mustermann AG", aAddress);

Order order = new Order();order.setValue(4000);order.setPayed(true);order.setOrderDate(new Date());

aCustomer.addOrder(order);

@Test public void a_customer_with_a_score_of_4_can_pay_in_advance_and_on_delivery() {

aCustomer = new CustomerBuilder() .withScore(4) .build();

Page 128: TestData Builder(( - Entwicklertag · private static Order createOrderWithValueOf(double value) { return createOrder(value, true, thisYear()); } private static Order createOrderFromThisYearWithValue

Entkopplung    

h#p://flickr.com/photos/Ym_ellis/2622333378  

Page 129: TestData Builder(( - Entwicklertag · private static Order createOrderWithValueOf(double value) { return createOrder(value, true, thisYear()); } private static Order createOrderFromThisYearWithValue

(Legacy)  Code  testbar  machen  

Page 130: TestData Builder(( - Entwicklertag · private static Order createOrderWithValueOf(double value) { return createOrder(value, true, thisYear()); } private static Order createOrderFromThisYearWithValue
Page 131: TestData Builder(( - Entwicklertag · private static Order createOrderWithValueOf(double value) { return createOrder(value, true, thisYear()); } private static Order createOrderFromThisYearWithValue

 Workshops  Coaching  /  Beratung  SoTwareentwicklung  

 @mar7nklose  [email protected]      

 

Kontakt  


Recommended