用Groovy方式实现接口便于单元测试和协作开发

在现代的软件开发中,应用系统往往被划分为多个模块以降低系统的复杂度,同时也便利于开发人员开发和测试。本文着重说明采用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框架)对类进行单元测试。

原文地址:https://www.cnblogs.com/cando/p/2313049.html