如何解决尝试对方法进行单元测试,但我无法摆脱突变
我正在使用 JUnit 5 和 Pitest 1.6.2,我正在尝试对以下方法进行单元测试
public class Validator {
public static final int MAX_REQUEST_ID_LENGTH = 36;
public void validateHeader(String requestId,String retryIndicator,ChannelIndicator channelIndicator,String apiSignature,Instant transactionTime) {
if (requestId.length() > MAX_REQUEST_ID_LENGTH) {
throw new ServerValidationException(SCHEMA_VALIDATION_ERROR,DEPOSIT);
}
}
}
使用以下单元测试
@ExtendWith(MockitoExtension.class)
class ValidatorTests {
@InjectMocks
Validator validator;
@Mock
private ErrorLogFactory errorLogFactory;
private final String REQUEST_ID = "1612207630840";
private final String REQUEST_ID_GREATER_THAN_MAX = StringUtils.repeat("*",MAX_REQUEST_ID_LENGTH + 1);
private final String RETRY_INDICATOR = "false";
private final String INVALID_RETRY_INDICATOR = "ABCD";
private final String API_SIGNATURE = "api-signature";
@test()
void validateHeader_requestId_greater_than_max() {
Exception exception = assertThrows(ServerValidationException.class,() ->
{ validator.validateHeader(REQUEST_ID_GREATER_THAN_MAX,RETRY_INDICATOR,ChannelIndicator.ONLINE,API_SIGNATURE,Instant.Now()); });
assertTrue(exception.getMessage().contains(SCHEMA_VALIDATION_ERROR));
}
}
当我查看我最悲惨的报告时,它告诉我以下内容
- 位置:validateHeader 被杀死:没有改变条件边界→ SURVIVED
- 否定条件→ KILLED
关于如何杀死这种突变有什么想法吗?
解决方法
当使用长度 > 36 的请求 ID 时,您只有一个测试用例来定义预期行为。
要杀死突变体,您需要进行额外的测试,以显示长度 == 36 的 id 的行为。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。