Junit 从另一个类模拟对象
我有一个启动服务的服务类。 此服务应仅在特定时间之间启动。 所以我需要嘲笑这个,但它不起作用 我的时间课:Junit 从另一个类模拟对象,junit,mocking,Junit,Mocking,我有一个启动服务的服务类。 此服务应仅在特定时间之间启动。 所以我需要嘲笑这个,但它不起作用 我的时间课: public boolean isTimeBetween_00_06(){ return Instant.now().isBefore(Instant.now() .truncatedTo(ChronoUnit.DAYS) .plus(6,ChronoUnit.HOURS)); } 我的服务级别: start(){ if(! new MyTimeUti
public boolean isTimeBetween_00_06(){
return Instant.now().isBefore(Instant.now()
.truncatedTo(ChronoUnit.DAYS)
.plus(6,ChronoUnit.HOURS));
}
我的服务级别:
start(){
if(! new MyTimeUtils().isTimeBetween_00_06){
throw new Exception;
}
}
我的测试班:
@InjectMocks
private MyServiceClass service;
@Mock
private MyTimeUtils myTimeUtils;
@Test
myTest(){
Mockito.when(myTimeUtils.isCurrentTimeBetween_00_06()).thenReturn(true);
service.start();
}
我希望得到正确的断言,但它以Exption停止
我也试过PowerMockito,但还是不起作用
有人有主意吗
致以最诚挚的问候。您应该在方法中插入
MyTimeUtils
,而不是创建实例。
不要忘记@RunWith(MockitoJUnitRunner.class)
请看一下代码:
public class MyServiceClass {
private final MyTimeUtils myTimeUtils;
public MyServiceClass(MyTimeUtils myTimeUtils) {
this.myTimeUtils = myTimeUtils;
}
public void start() {
if (!myTimeUtils.isTimeBetween_00_06()) {
throw new IllegalStateException("ERROR");
}
}
}
@RunWith(MockitoJUnitRunner.class)
public class MyServiceClassTest {
@InjectMocks
private MyServiceClass service;
@Mock
private MyTimeUtils myTimeUtils;
@Test
public void myTest(){
Mockito.when(myTimeUtils.isTimeBetween_00_06()).thenReturn(true);
service.start();
}
}