我有一个与某个对象交互的代码,然后应该调用它的 finish() 方法。
void completeTransaction(PaymentTransaction transaction) {
recordTransaction(transaction.getId());
transaction.finish();
}
PaymentTransaction 是一些第三方类,之后的行为finish()
是未定义的——它可能会抛出异常或只是静默失败。
我需要编写一个单元测试,然后才通过:
recordTransaction(transaction.getId())
叫transaction.finish()
叫transaction.finish()
后调用recordTransaction(transaction.getId())
满足上述条件的测试应该禁止这样的代码:
void completeTransaction(PaymentTransaction transaction) {
transaction.finish();
recordTransaction(transaction.getId()); //oops
}
第一个条件的测试用例:
void testCompleteTransaction_TransactionRecorded() {
completeTransaction(transactionMock);
// assert that recordTransaction(transaction.getId())
// called with correct argument
completeTransaction(PaymentTransaction transaction) } 对于第二个:
void testCompleteTransaction_TransactionCompleted() {
completeTransaction(transactionMock);
// assert that transaction.finish() called
}
我想知道如何通过测试用例强制执行第三个条件。