4

我有一个简单的方法返回一个String.

它还创建了一个本地List. 我想测试添加到本地的值List

这是一个例子

package com.impl;

import java.util.ArrayList;
import java.util.List;

import com.test.domain.CustomerVo;

public class ClassImpl {

    public String assignGift(CustomerVo customerVo) {
        List<String> listOfGift = new ArrayList<String>();

        if (customerVo.getName().equals("Joe")) {
            listOfGift.add("ball");
        } else if ((customerVo.getName().equals("Terry"))) {
            listOfGift.add("car");
        } else if (customerVo.getName().equals("Merry")) {
            listOfGift.add("tv");
        }else {
            listOfGift.add("no gift");
        }

        return "dummyString";
    }
}

customerVo.getName.equals("Terry"),car添加到本地List.

4

1 回答 1

3

这完全不是那么容易。

你需要使用类似powermock的东西。

使用 powermock,您可以在调用方法之前创建一个场景并播放它,这意味着您可以告诉ArrayList类构造函数预期被调用并返回 amock而不是真正的ArrayList.

这将允许您在mock.

像这样的东西应该可以工作:

ArrayList listMock = createMock(ArrayList.class);
expectNew(ArrayList.class).andReturn(listMock);

因此,当您的方法创建本地Listpowermock 时,实际上会返回您的 mock List

更多信息在这里

这种模拟实际上是用于对未编写为可测试的遗留代码进行单元测试。如果可以的话,我强烈建议重写代码,这样就不需要发生这种复杂的模拟。

于 2013-05-12T10:42:08.273 回答