【发布时间】:2017-11-27 17:29:13
【问题描述】:
我正在阅读 Martin Fowler (Mocks Aren't Stubs) 的文章,开头有这个 Java 测试:
public class OrderStateTester extends TestCase {
private static String TALISKER = "Talisker";
private static String HIGHLAND_PARK = "Highland Park";
private Warehouse warehouse = new WarehouseImpl();
protected void setUp() throws Exception {
warehouse.add(TALISKER, 50);
warehouse.add(HIGHLAND_PARK, 25);
}
public void testOrderIsFilledIfEnoughInWarehouse() {
Order order = new Order(TALISKER, 50);
order.fill(warehouse);
assertTrue(order.isFilled());
assertEquals(0, warehouse.getInventory(TALISKER));
}
public void testOrderDoesNotRemoveIfNotEnough() {
Order order = new Order(TALISKER, 51);
order.fill(warehouse);
assertFalse(order.isFilled());
assertEquals(50, warehouse.getInventory(TALISKER));
}
我对这段代码的理解是,在开头(setUp())创建了一个WarehouseImpl,并在两个测试中使用,这两个测试都操作WarehouseImpl对象。因此,测试会相互影响,并且它们的运行顺序可能会影响结果。
我错过了什么吗?
【问题讨论】:
-
提示:转向 Junit4。 Junit3 和扩展测试用例;这几乎就像上个千年一样。
标签: java unit-testing tdd xunit stub