Пару лет назад я писал о параметризованных тестах JUnit . Одна из вещей, которые мне не нравились в них, заключалась в том, что JUnit называл индивидуальные тестовые наборы, используя числа, поэтому, если они потерпели неудачу, вы не знали, какие тестовые параметры вызвали ошибку. Следующий скриншот Eclipse покажет вам, что я имею в виду:
Однако в JUnit 4.11 аннотация @Parameters теперь принимает аргумент name который можно использовать для отображения параметров в имени теста и, следовательно, для их большей наглядности. Вы можете использовать следующие заполнители в этом аргументе, и они будут заменены фактическими значениями во время выполнения JUnit:
-
{index}: текущий индекс параметра -
{0},{1},…: первое, второе и т. Д., Значение параметра
Вот пример:
|
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
|
import static org.junit.Assert.assertEquals; import java.util.Arrays;import java.util.Collection; import org.junit.Test;import org.junit.runner.RunWith;import org.junit.runners.Parameterized;import org.junit.runners.Parameterized.Parameters; @RunWith(Parameterized.class)public class StringSortTest { @Parameters(name = "{index}: sort[{0}]={1}") public static Collection<Object[]> data() { return Arrays.asList(new Object[][] { { "abc", "abc"}, { "cba", "abc"}, { "abcddcba", "aabbccdd"}, { "a", "a"}, { "aaa", "aaa"}, { "", ""} }); } private final String input; private final String expected; public StringSortTest(final String input, final String expected){ this.input = input; this.expected = expected; } @Test public void testSort(){ assertEquals(expected, sort(input)); } private static String sort(final String s) { final char[] charArray = s.toCharArray(); Arrays.sort(charArray); return new String(charArray); }} |
Когда вы запустите тестирование, вы увидите отдельные тестовые наборы, названные так, как показано на скриншоте Eclipse ниже, поэтому легко определить параметры, используемые в каждом тестовом примере.
Обратите внимание, что из-за ошибки в Eclipse имена, содержащие скобки, усекаются. Вот почему мне пришлось использовать sort[{0}] вместо sort({0}) .

