我正在尝试用线程在try-catch块中测试异常。使用Mocito在try block中使用sleep方法。我使用了下面的mockito测试方法,它按预期通过了测试,但从未提高我的测试覆盖率。coverage报告显示waitForSync方法中的catch块从未到达。有人能帮我吗我在这里错过了什么?
public class CreateAccount{
@Autowired
private AccountService accountService,
@Autowired
private BuildAccountResponse buildAccountResponse
@Value("${waitForSync:0}")
private Integer accountSyncWaitTimeMs;
public AccountResponse createMyAccount(AccountRequest request, String accountId) {
accountService.checkIfAccountExists(accountId);
Optional<AccountResponse> myResponse= buildAccountResponse.create(request, accountId);
waitForSync(accountId);
return myResponse.get();
}
}
WaitForSync方法
private void waitForSync(String accountId) {
try{
if (accountSyncWaitTimeMs>0){
Thread.sleep(accountSyncWaitTimeMs)
}
catch { (Exception e)
Logger.warn("Failed to apply wait account sync");
}
我的mockito测试方法
@InjectMocks
@Spy
private CreateAccount createAccount;
private static final accountWaitTime = 1;
ReflectionTestUtils.setField(createAccount, "accountSyncWaitTimeMs" , accountWaitTime);
private AccountRequest request;
private static final String accountId = "AccountId";
@Test (expected = Exception.class)
public void createAccount_waiSync_Exception () {
doThrow(new InterruptedException()).when(Thread.class);
createAcccount.createMyAccount(request, accountId);
}
测试按预期通过,但线下的测试从未覆盖,所以基本上我在覆盖率方面增加了测试,所以应该如何改进它?
catch { (Exception e)
Logger.warn("Failed to apply wait account sync");
你可以在Mocktio之上使用PowerMocktio,你可以检查Mocktio的新版本,他们promise会在mocking静态方法上做一些改进
@RunWith(PowerMockRunner.class)
@PrepareForTest(Thread.class)
public class ExampleTest{
@InjectMocks
@Spy
private CreateAccount createAccount;
private static final accountWaitTime = 1;
ReflectionTestUtils.setField(createAccount, "accountSyncWaitTimeMs" , accountWaitTime);
private AccountRequest request;
private static final String accountId = "AccountId";
@Test (expected = Exception.class)
public void createAccount_waiSync_Exception () {
PowerMockito.mockStatic(Thread.class);
PowerMockito.doThrow(new InterruptedException()).when(Thread.class);
Thread.sleep(anyLong()); // or set the value you want
createAcccount.createMyAccount(request, accountId);
}
}
我已经为以下函数编写了Junit测试用例。当检查JACOCO测试覆盖率时。它显示测试用例只覆盖了try块。我是编写测试用例的新手。如何在测试用例中覆盖异常和catch块 这里有一个方法 和测试方法
我试图在下面的代码中覆盖catch块,但我无法。我知道在读/写文件时需要引起IOException,但我不能这样做。而且,我不能使用PowerMockito来覆盖静态方法,因为我使用的是JUnit5。有人能帮忙吗? 这是我编写的一个测试用例,但它返回了这个错误-org.mockito.exceptions.Misusing.MissingMethodInvocationException:when
我试过这个:
我正在查看Java SE7的新功能,目前我正在: http://docs.oracle.com/javase/7/docs/technotes/guides/language/catch-multiple.html 关于捕获多重功能,当我遇到这个语句时: 注意:如果一个捕捉块处理多个异常类型,那么捕捉参数是隐式最终的。在这个例子中,捕捉参数ex是最终的,因此您不能在捕捉块中给它赋值。 我从未注意到
问题内容: 我正在研究节点7异步/等待功能,并不断跨这样的代码绊脚 这似乎是使用异步/等待解决/拒绝或返回/抛出的唯一可能性,但是,v8不会在try / catch块中优化代码吗? 有其他选择吗? 问题答案: 备择方案 替代方法: 显式地使用诺言将是这样的: 或类似的东西,使用延续传递样式: 原始例子 您的原始代码所做的是暂停执行并等待由其返回的诺言解决。然后,它继续执行,并将返回的值写入,如果承
有可能在SWIFT中捕捉异常吗?给定以下代码: 有可能防止异常使整个程序崩溃吗?也就是说,在Objective-C中,与以下内容相对应的Swift等价是什么: