我正在尝试在名为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的值?
另外,还有其他方法可以测试吗?