2 回答

TA貢獻(xiàn)1864條經(jīng)驗(yàn) 獲得超2個(gè)贊
您的用例似乎是參數(shù)化測(cè)試的一個(gè)很好的候選者。
JUnit 5 現(xiàn)在真的很成熟。所以我鼓勵(lì)使用它。
單元測(cè)試的總體思路是識(shí)別場(chǎng)景:你有什么作為輸入,你有什么作為預(yù)期。
在您的問(wèn)題中,您成功地開始定義它們。
但是一個(gè)好的單元測(cè)試是一個(gè)不會(huì)留下漏洞的單元測(cè)試。因此,您還必須識(shí)別和測(cè)試極端情況。
例如,您可以定義場(chǎng)景(并非詳盡無(wú)遺,但會(huì)給您一個(gè)想法):
partition([1,2,3,4,],2) will return ([1,2],[3,4]) // nominal case
partition([1,2,3,4,],3) will return ([1,2,3],[4]) // nominal case
partition([1,2,3,4,],5) will return () // corner case
partition([],2) will return () // corner case
現(xiàn)在為他們寫一個(gè)測(cè)試:
import static java.util.Arrays.asList;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Stream;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.Arguments;
import org.junit.jupiter.params.provider.MethodSource;
public class PartitionTest {
@ParameterizedTest
@MethodSource("partitionFixture")
void partition(List<Integer> originalList, int partitionSize, List<List<Integer>> expectedListOfList) {
ArrayList<ArrayList<Integer>> actualListOfList = new Partition().partition(originalList, partitionSize);
Assertions.assertEquals(expectedListOfList, actualListOfList);
}
@SuppressWarnings("unused")
private static Stream<Arguments> partitionFixture() {
return Stream.of(Arguments.of(asList(1, 2, 3, 4), 2, asList(asList(1, 2), asList(3, 4))),
Arguments.of(asList(1, 2, 3, 4), 3, asList(asList(1, 2, 3), asList(4))),
Arguments.of(asList(1, 2, 3, 4), 5, asList()),
Arguments.of(asList(), 2, asList()));
}
}
添加回答
舉報(bào)