gpt4 book ai didi

java - 具有异常预期的 JUnit 测试(多个断言)

转载 作者:搜寻专家 更新时间:2023-11-01 01:56:09 25 4
gpt4 key购买 nike

我正在测试用于 Xalan 的 WeekConverter 并想知道我的测试到底在做什么。 :D

具有以下测试方法:

@Test(expected = IllegalArgumentException.class)
public void testConvertTwoDigitYearWithWrongInput() {
WeekConverter weekConverter = new WeekConverter(WeekConverter.Strategy.TWO_DIGIT_YEAR);

//wrong or empty inputs
assertEquals("0", weekConverter.convert(""));
assertEquals("0", weekConverter.convert("abcdefgh"));
}

此测试是否期望所有断言出现异常,还是仅第一个断言出现异常?如果只是第一个,这意味着我必须为每个断言创建一个测试方法,尽管我期望在这两种情况下出现相同的异常。有人可以在这里确认我的示例吗?

我还有一个 null 测试,它会产生一个 NullPointerException。软验证如下:

if (inputDate == null) {
do something and throw NullPointerexception
} else if (inputDate.isEmpty()) {
do something and throw IllegalArgumentException, since inputDate is not really null
} else if (inputDate.matches(regex)) {
go futher and convert
} else {
do something and throw IllegalArgumentException, since inputDate does not match regex
}

因此,一个测试方法需要带有两个断言的 IllegalArgumentException。但很明显,我需要两种不同的测试方法,不仅要尊重 JUnit 的功能,而且我希望从两种不同的状态抛出。

最佳答案

您可以将您的方法分解为多个方法,但是如果您有很多输入样本,那将是不方便的。

您可以改用以下方法:

@Test
public void testConvertTwoDigitYearWithWrongInput() {
WeekConverter weekConverter = new WeekConverter(WeekConverter.Strategy.TWO_DIGIT_YEAR);

assertFailsToConvert(weekConverter, "");
assertFailsToConvert(weekConverter, "abcdefgh");
}

private void assertFailsToConvert(WeekConverter weekConverter, String input) {
try {
weekConverter.convert(input);
fail("Should not convert [" + input + "]");
} catch (IllegalArgumentException ex) {}
}

关于java - 具有异常预期的 JUnit 测试(多个断言),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8578626/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com