lcu*_*cuz 6 java easymock date
我正在使用easymock模拟一个方法,它的主体有一个日期,如下所示:
public void testedMethod() {
...
if (doSomething(new Date())) {
...
}
Run Code Online (Sandbox Code Playgroud)
我的测试看起来像这样:
public void testThatMethod() {
...
expect(testedClass.testedMethod(new Date())).andReturn(false);
...
}
Run Code Online (Sandbox Code Playgroud)
但是当我运行测试时,有时会出现这样的错误:
意外的方法调用testsMethod(Thu Jan 28 09:45:13 GMT-03:00 2010):testedMethod(Thu Jan 28 09:45:13 GMT-03:00 2010):预期:1,实际:0
我认为这是因为有时日期略有不同.我没有成功地尝试了一些灵活的期望.有办法解决这个问题吗?
小智 5
我们不断面临类似的问题,这些是我看到的替代方案:
所以这真的取决于你的个人喜好。当您经常使用当前时间戳时,我会推荐参数匹配器 - 因为这项投资将很快得到回报。
停止使用 new Date(),改用具有恒定时间的日历。
//Declare the Calendar in your test method
Calendar cal = Calendar.getInstance();
cal.setTimeInMillis(0l);
//receive the calendar to be used in testedClass constructor
public void testedMethod() {
...
if (doSomething(cal.getTime())) {
...
}
//use the same calendar to make the assertion
public void testThatMethod() {
...
expect(testedClass.(testedMethod(cal.getTime())).andReturn(false);
...
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4208 次 |
| 最近记录: |