testFluently();
21.11.06 Footer text
1
Simple measure to make tests more fluent
List initialization in tests
Fluent interfaces
Nifty tools......
21.11.06 Footer text
2
List initialization
public void testColorComparison() {
Collection colors = new ArrayList();
colors.add("RED");
colors.add("BLUE");
colors.add("GREEN");
assertTrue("colors.contains(\"RED\")", colors.contains("RED"));
}
21.11.06 Footer text
3
List initialization
public void testColorComparisonUsingArrayInitialization() {
Collection colors = Arrays.asList("RED", "BLUE", "GREEN");
assertTrue("colors.contains(\"RED\")", colors.contains("RED"));
}
public void testColorComparisonUsingArrayInitializationJdk4Style() {
Collection colors = Arrays.asList(new String[] {"RED", "BLUE", "GREEN"});
assertTrue("colors.contains(\"RED\")", colors.contains("RED"));
}
21.11.06 Footer text
4
Add elements......
public void testMethodAdd() {
Order order = new Order();
order.addOrderLine(new OrderLine());
order.addOrderLine(new OrderLine());
assertEquals(2, order.getNumberOfOrderLines());
}
21.11.06 Footer text
5
....fluently......
public void testMethodAddAndMethodChaining() {
Order order = new Order();
order.addOrderLine(new OrderLine()).addOrderLine(new OrderLine());
assertEquals(2, order.getNumberOfOrderLines());
}
public void testMethodAddUsingVarArgs() {
Order order = new Order();
order.addOrderLine(new OrderLine(), new OrderLine());
assertEquals(2, order.getNumberOfOrderLines());
}
21.11.06 Footer text
6
Collections continued......
public void testCoalesceOrderLineNaive() {
.......
for (Iterator iterator = coalescedOrderLines.iterator(); iterator.hasNext();)
OrderLine orderLine = iterator.next();
if ("17".equals(orderLine.getProductCode())) {
found17 = true;
} else if ("18".equals(orderLine.getProductCode())) {
found18 = true;
} else {
fail("OrderLine should no exists[" + orderLine + "]");
}
}
assertTrue("found17", found17);
assertTrue("found18", found18);
}
21.11.06 Footer text
7
...fluently
public void testCoalesceOrderLinesUsingCommonsCollections() {
.....
Collection orderLines =
order.coalesceOrderLineByProducts();
assertEquals(2, order.getNumberOfOrderLines());
assertEquals(new OrderLine("17", 20, 220d), CollectionUtils.find(orderLines,
new BeanPropertyValueEqualsPredicate("productCode", "17")));
assertEquals(line18, CollectionUtils.find(orderLines,
new BeanPropertyValueEqualsPredicate("productCode", "18")));
}
21.11.06 Footer text
8
References
http://www.martinfowler.com/bliki/FluentInterface.html
21.11.06 Footer text
9