您需要找到某种方法将系统“重置”到众所周知的初始状态,即没有用户也没有订单的状态。
您还需要找到一些方法来观察系统中的状态。这种方式实际上可能具有破坏性,即它可能会修改甚至损坏系统的状态,但是尽管如此。在您的情况下,方法CreateUser
可以用作这样的观察者来检查用户是否已经存在,因为已知-1
在这种情况下会返回。
以下是您的一个测试用例的样子:
reset (); // Each test case should start with reset
assertNotEquals (-1, CreateUser ("foo", "bar")); // This should work fine
assertEquals (-1, CreateUser ("foo", "zoo")); // Make sure user "foo" does exist
assertNotEquals (-1, SubmitOrder ("foo", "bar", "apple", 1)); // Make sure user can pass authentication
assertEquals (-1, SubmitOrder ("foo", "zoo", "apple", 1)); // Make sure password is actually checked
上面的测试用例检查是否CreateUser
实际创建了具有给定名称和密码的用户,并且不允许创建两个具有相同名称的用户。
这是另一个测试用例:
reset ();
CreateUser ("foo", "bar");
orderID = SubmitOrder ("foo", "bar", "apple", 1); // Submit order
assertNotEquals (-1, CancelOrder (orderID)); // Make sure order was really created
assertEquals (-1, CancelOrder (orderID)); // Make sure order was cancelled
等等。当然,最好找到更直接的方法来观察系统状态,例如直接查询数据库。