在集成测试

时间:2016-12-01 16:12:41

标签: java spring integration-testing powermock

我正在尝试在名为AbcDAO的类中测试此方法:

public List<AbcVO> getCost(List<AbcVO> items) throws ParseException {
    try {
        String var;
        final Map<Object, Object> params = new HashMap<Object, Object>();
        for (final AbcVO abcVO : items) {
            if (Xyz.isTime(abcVO.getDate())
            {
                if (AppConstant.IT1.equalsIgnoreCase(abcVO.getItemFlag())
                    || AppConstant.IT2.equalsIgnoreCase(abcVO.getItemFlag())) {
                    var = "IT_New";
                } else {
                    var = "IT_Old";
                }
                final List<Map<String, Object>> result = this.runQuery(var);
                {Code to populate abcVO's cost field with amt}
            }
        }
        return items;
    } catch (final ParseException e) {
        throw new Exception("AbcDAO", "getCost", e, AppConstant.ERR_STRING);
    }
}

正如我们所看到的那样,对abcVO.getDate类及其XyzDAO类进行了静态调用,看起来像是:

public static boolean getDate(Timestamp ts) throws ParseException {
        final java.util.Date date = new SimpleDateFormat("MM/dd/yyyy").parse(AppConfig.ProcDate);
        final Timestamp ts = new Timestamp(date.getTime());
        if (ts.compareTo(ts) < 0)
        {
            return true;
        } else {
            return false;
        }
}

我想测试的内容很简单 - 我想验证如果我将itemFlag设置为AppConstant.IT2,则var应该等于IT_new并验证返回金额。     这是我的测试类:

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = { "classpath:test-context.xml" })
public class AbcDAOTest {

    @Autowired
    private AbcDAO abcDAO;

    @Before
    public void setUp() throws Exception {
    }

    @Test
    public final void testGetCost() throws MIBException {
        // Create the item list
        final AbcVO abcVO = new AbcVO();
        abcVO.setItemFlag(AppConstant.IT2);
        final List<AbcVO> items = new ArrayList<AbcVO>();
        items.add(abcVO);

        this.abcDAO.getCost(items);
        final String expectedCost = "1237";
        assertEquals(items.get(0).getCost(), expectedCost));
    }
}

我遇到的问题是我在静态调用NPE上获得了.parse(AppConfig.ProcDate),因为ProcDate为空。     我的问题是我可以将这个值注入此测试(例如AppConfig.ProcDate = "12/01/16")吗?另外,我如何验证作为私有变量的var的值?     另外,还有其他方法可以测试吗?

0 个答案:

没有答案