【发布时间】:2015-07-31 15:47:48
【问题描述】:
运行此测试:
@Test
public void testSystemCurrentTimeMillis() {
new NonStrictExpectations(System.class) {{
System.currentTimeMillis(); result = 1438357206679L;
}};
long currentTime = System.currentTimeMillis();
assertEquals(1438357206679L, currentTime);
}
我得到一个 IllegalStateException:
java.lang.IllegalStateException:此时缺少对模拟类型的调用;请确保此类调用仅在声明合适的模拟字段或参数之后出现 在 unittests.DateTest$1.(DateTest.java:24) 在 unittests.DateTest.testSystemCurrentTimeMillis(DateTest.java:23)我的测试 (JMockit 1.18) 有什么问题?
【问题讨论】:
-
什么是结果?你能分享整个课程代码吗?还有什么是 NonStrictExpectations ???你也可以分享一下代码吗?
-
NonStrictExpectations 是一个 JMockit 类。结果用于 JMockit 模拟。 jmockit.org/tutorial/Mocking.html#expectation
-
我总是使用 org.joda.time.DateTimeUtils 来获取当前时间 DateTimeUtils.currentTimeMillis() 并在单元测试 DateTimeUtils.setCurrentMillisFixed(longValue) 结束时使用 DateTimeUtils.setCurrentMillisSystem()
-
我想用 JMockit 来做。
标签: java unit-testing jmockit