【发布时间】:2021-05-06 04:33:22
【问题描述】:
我正在使用 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 被杀死:无更改条件边界 → 幸存
- 否定条件→KILLED
关于如何杀死这种突变有什么想法吗?
【问题讨论】:
标签: java junit5 mutation-testing pitest