[英]How to get full coverage for Java Code Coverage? Junit test cases
[英]How to Mock LdapTemplate in Java and get full code coverage
我正在尝试使用 Mockito 对一个非常简单的 junit 测试进行全面覆盖,并且正在脱颖而出。 我的免责声明是我是 Mockito 的新手,尽管我想做的事情看起来很简单。
请注意,我的 junit 测试通过,只是覆盖不完整。 运行测试时,返回 true 的方法部分(用户列表不为空)未运行/覆盖。
我的问题是...
ldap 是否需要准备好任何测试数据?
你能简单地模拟 ldap 数据吗?
非常感谢您提供的任何见解。
这是正在测试的方法(类名 = LdapRepository)...
public Mono<Boolean> ldapTemplateQuery(Email email) {
Mono<Boolean> blockingWrapper = Mono.fromCallable(() -> {
List<LdapUser> users = ldapTemplate.find(query().where("cn").is(email.address()), LdapUser.class);
if (users.isEmpty()) {
return false;
} else {
return true;
}
}).onErrorResume(
original -> Mono.error(new UserNotFoundException("User not found for email " + email.address())));
return blockingWrapper.subscribeOn(Schedulers.elastic());
}
这是 junit class ...
@RunWith(MockitoJUnitRunner.class)
public class LdapUserRepositoryMockTest {
private @InjectMocks LdapUserRepository ldapUserRepository;
@Mock
private LdapTemplate ldapTemplate;
Email email = new Email("abcd@xyz.com");
User user = new User(email);
static final String password = "VGVzdEAxMjM=";
@Test
public void ldapTemplateQueryTest() {
LdapUser ldapUser = new LdapUser(user, password.toCharArray());
List<LdapUser> users = new ArrayList<>();
users.add(ldapUser);
lenient().when(ldapTemplate.find(query().where(Mockito.anyString()).is(Mockito.anyString()), LdapUser.class)).thenReturn(users);
Mono<Boolean> locked = ldapUserRepository.ldapTemplateQuery(email);
StepVerifier.create(locked).expectNext(false).verifyComplete();
}
这是覆盖结果的屏幕截图......
在某人的大力帮助下,我得到了答案。 正如您将在下面看到的,这是对宽松声明的一个相当小的改动。
希望这对沿途的人有所帮助。
@RunWith(MockitoJUnitRunner.class)
public class LdapUserRepositoryMockTest {
private @InjectMocks LdapUserRepository ldapUserRepository;
@Mock
private LdapTemplate ldapTemplateMock;
Email email = new Email("abcd@xyz.com");
User user = new User(email);
static final String PASSWORD = "VGVzdEAxMjM=";
@Test
public void ldapTemplateQueryTest() {
LdapUser ldapUser = new LdapUser(user, PASSWORD.toCharArray());
List<LdapUser> users = new ArrayList<>();
users.add(ldapUser);
lenient()
.when(ldapTemplateMock.find(Mockito.any(), Mockito.eq(LdapUser.class)))
.thenReturn(users);
Mono<Boolean> locked = ldapUserRepository.checkIfAccountLocked(email);
StepVerifier.create(locked).expectNext(true).verifyComplete();
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.