我想测试我预定的任务,所以我遵循了本教程
@SpringJUnitConfig(SchedulerConfig.class)
public class MailJobFinderTaskIT {
@SpyBean
private MailJobFinderTask mailJobFinderTask;
@Test
public void whenWaitThreeSecond_ThenTaskCalledThreeTimes(){
await()
.atMost(Duration.ofSeconds(3))
.untilAsserted(() -> verify(mailJobFinderTask, atLeast(3)).findEmailJobs());
}
}
但实际上它不工作,因为下面的错误
org.mockito.exceptions.misusing.NullInsteadOfMockException:
Argument passed to verify() should be a mock but is null!
Examples of correct verifications:
verify(mock).someMethod();
verify(mock, times(10)).someMethod();
verify(mock, atLeastOnce()).someMethod();
not: verify(mock.someMethod());
Also, if you use @Mock annotation don't miss initMocks()
这是我任务课的签名
@Component
public class MailJobFinderTask extends SuppressedLogPoller {
....
}
@Scheduled(fixedRate = 1000)
public void findEmailJobs() {
.
.
}
我已经尝试将注释更改为@SpringBootTest,并尝试使用@MockBean而不是@SpyBean,但没有成功。事实上,我不明白为什么我的bean mail JobFinder任务没有创建
你的代码在我的系统上似乎运行良好,但我不得不做一些修改。
我建议您将这些作为故障排除的起点。此外,您还没有提到是否可以成功复制链接教程,该教程在我的系统上也运行良好。如果你还没有,我建议你先试试这个教程,确认它是有效的,然后再添加你自己的代码。
如果下面的内容对您没有帮助,那么问题可能不在您发布的代码部分。在这种情况下,共享完整代码将帮助我们更好地解决问题。但就目前而言,可能需要特别注意以下列出的进口声明和主要变化。
代码的更改
测试类代码
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.mock.mockito.SpyBean;
import org.springframework.test.context.junit.jupiter.SpringJUnitConfig;
import org.awaitility.Duration;
import static org.awaitility.Awaitility.await;
import static org.mockito.Mockito.atLeast;
import static org.mockito.Mockito.verify;
@SpringJUnitConfig(ScheduledConfig.class)
public class MailJobFinderTaskIT {
@SpyBean
private MailJobFinderTask mailJobFinderTask;
@Test
public void whenWaitThreeSecond_ThenTaskCalledThreeTimes(){
await()
.atMost(Duration.FIVE_SECONDS)
.untilAsserted(() -> verify(mailJobFinderTask, atLeast(7)).findEmailJobs());
}
}
域类
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
@Component
public class MailJobFinderTask {
@Scheduled(fixedRate = 1200)
public void findEmailJobs() {
}
}
我试图使用Mockito的Spy部分模拟一个服务,重写一个方法,使其返回一致的数据进行测试,但Say Spy无缘无故抛出一个UnfinishedStubbingException。 这是我的测试类: 这两个测试都失败了,指向指向
我的等待块应该测试我的托盘架是否有足够的空间来存储我的托盘。所以当我有20个托盘,我的商店有15个空间,15个应该储存,其他5个托盘应该在我的等待块等待,直到托盘架再次有空间。问题是我得到一个错误,没有空单元格,这意味着没有空间的托盘不在我的块中等待,而是通过等待块,这导致了一个错误。问题出在哪里?等待块和机架截齿是附加的。 球拍 误差
已删除MyTestConfig.class,但问题仍然相同。即使我使用@SpringBootTest(classes={Application.Class,MyProblematicServiceImpl.Class}),它仍然在自动连线的地方返回模拟对象。MyProblematicServiceImpl是用@Service注释的空类。
我在Unity中制作了一个2d游戏,我正在使用此代码实例化敌人 在这段代码中,IENumator方法正在执行它们的工作,但没有产生返回新的WaitFor秒。意味着如果我在Unity中运行它,敌人会在每一帧中实例化。我该怎么解决呢?
尽管我的测试方法被@WithMockUser注释,但我仍然被拒绝访问。为什么这在集成测试中不起作用?使用@webappconfiguration和mockmvc进行测试一切都很好。