在现代的软件开发中,应用系统往往被划分为多个模块以降低系统的复杂度,同时也便利于开发人员开发和测试。本文着重说明采用Groovy方式如何便于协作开发。
OrderBook 团队在开发订单管理模块,编写了一个接口
package art.groovy.order;
public interface Order {
int place();
}
Billing团队取得订单,并编写支付的实现。
package art.groovy.billing;
import art.groovy.order.Order;
public class BillingManager {
public int processAndNotify(Order order){
//Suppose the order placement is OK
if (order.place() == 1){
//Notify the participant
return 1;
}
return 0;
}
}
因为Order的接口还没有实现,为了使得BillingManager能够被单元测试,我们对Order接口添加Mock实现
package art.groovy.billing
import art.groovy.order.Order
import org.junit.Test
import static org.junit.Assert.*;
class BillingManagerTest {
@Test
void process(){
def order = { 1 } as Order
def billingManager = new BillingManager()
assert workflowEngine.processAndNotify(order) == 1
}
}
以上的代码可以看出, Groovy的动态语言特性让我们能够更容易(相对于其他的Mock框架)对类进行单元测试。