首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在JUnit中模拟ERP系统

如何在JUnit中模拟ERP系统
EN

Stack Overflow用户
提问于 2013-07-25 14:33:08
回答 2查看 292关注 0票数 3

我正在将JUnit测试添加到企业解决方案的web服务中。我的问题是:如果可能的话,我如何在JUnit测试中模拟ERP系统?

例如,我有一个getOrders(Connection con, String customerId)方法。然而,它向企业资源规划系统发出一个电话,列出以下所有订单:

代码语言:javascript
复制
public List<Order> getOrders(Connection con, String customerId) {
  // Call ERP system
  orders = con.fetchOrders(customerId);

  // Manipulate result
  orders...

  return orders;      
}

有什么办法来模拟ERP连接吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-07-25 14:44:33

我想你是说模仿连接对象吧?不清楚连接是接口还是类。一些模拟对象库只在接口上工作。下面是一些比较流行的Java模拟对象库jmock莫基托易模拟

基本思想是创建一个模拟Connection对象,并让它返回您想要测试的数据。

例如,使用easymock:

代码语言:javascript
复制
String customerId =...
List<Order> myOrders = ...

Connection mockConnection = EasyMock.createMock(Connection.class);

EasyMock.expect(mockConnection.fetchOrders(customerId)).andReturn(myOrders);
EasyMock.replay(mockConnection);

//call system under test:
List<Orders> results = getOrders(mockConnection, customerId);

List<Orders> expectedResults = ....

assertEquals(expectedResults, results);
票数 5
EN

Stack Overflow用户

发布于 2013-07-25 14:39:08

如果Connection是一个接口,那么您可以简单地使用类似于莫基托的东西来验证发送给它的消息。

如果Connection是一个具体的类,那么它就更难了。我会创建一个接口,该接口复制连接类、公共方法并将其委托给适当的ERP Connection实例。

代码语言:javascript
复制
interface ERPConnection {
   List<Order> fetchOrders(String customerID);
}

class MyConnection implements ERPConnection {
    private Connection _conn;

    public List<Order> fetchOrders(string customerID) {
      return _conn.fetchOrders(customerID);
    }
}

现在,在您的代码中,您将依赖ERPConnection接口,而不是Connection具体类。这会让您感觉到很多变化,但它将使您远离ERP系统的更改,并允许您模拟接口并测试交互。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17860998

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档