Именование регрессионных тестов Randoop

Я хотел бы, чтобы мои регрессионные тесты, сгенерированные Randoop 4.2, назывались (Something)RandoopTest.java, поэтому я установил флаг командной строки --regression-test-basename=RandoopTest. Когда я запускаю Randoop, все мои регрессионные тесты заканчиваются RandoopTest0.java (обратите внимание на 0). Например, когда я запускаю следующую команду,

java -classpath C:\sandbox\TestJavaProject\bin;%RANDOOP_JAR%
        randoop.main.Main gentests
        --testclass=org.jaffa.datatypes.Currency
        --junit-package-name=org.jaffa.datatypes
        --junit-output-dir=C:\sandbox\TestJavaProject\src\test\java
        --regression-test-basename=CurrencyRandoopTest
        --time-limit=10
        --junit-reflection-allowed=false
        --flaky-test-behavior=DISCARD

Я получаю два сгенерированных файла, как показано в выводе консоли:

Writing regression JUnit tests...
Created file C:\sandbox\TestJavaProject\src\test\java\org\jaffa\datatypes\CurrencyRandoopTest0.java
Created file C:\sandbox\TestJavaProject\src\test\java\org\jaffa\datatypes\CurrencyRandoopTestDriver.java
Wrote regression JUnit tests.

Есть ли простой способ устранить 0? Мне интересно, почему он там. Я никогда не замечал никаких других чисел, кроме 0, добавленных к имени класса. В настоящее время наши сценарии maven предназначены для запуска тестов JUit, которые заканчиваются на «Test», поэтому 0 беспокоит. (Я знаю, что могу модифицировать сценарии для автоматического запуска тестов JUnit, которые заканчиваются на «Test0», но было бы лучше, если бы мне этого не требовалось.)


person kc2001    schedule 04.09.2019    source источник


Ответы (1)


Randoop выводит тесты в файлы с именами ...Test0,java, ...Test1.java и т. д. По умолчанию только 500 помещаются в каждый пронумерованный файл. Randoop обычно создает много тестов, и помещение их всех в один файл нарушит ограничения Java на размер файла.

Randoop выводит набор тестов, в котором выполняются все тесты, в файле с именем ...Test.java без номера в конце имени файла.

пример в начале Руководство Randoop показывает эти файлы и то, как их использовать.

Если вы никогда не видели, чтобы Randoop выводил более 500 тестов, возможно, вы захотите настроить аргументы командной строки в Randoop, чтобы предоставить ему больше информации, чтобы он мог более эффективно генерировать тесты.

Пример

В качестве конкретного примера файлов см. каталог build/working-directories/naive-collections-test/java/foo/bar/. Он будет существовать после того, как вы запустите собственный набор тестов Randoop.

Он содержит файлы:

NaiveRegression.java

NaiveRegression0.java
NaiveRegression1.java
NaiveRegression2.java

где содержимое NaiveRegression.java:

@RunWith(Suite.class)
@Suite.SuiteClasses({ NaiveRegression0.class, NaiveRegression1.class, NaiveRegression2.class })
public class NaiveRegression {
}
person mernst    schedule 05.09.2019
comment
Спасибо за объяснение! Я не вижу сгенерированных файлов классов, оканчивающихся на Test. Я вижу файлы * TestDriver, которые, как я полагаю, вы называете файлом набора, поскольку он запускает тесты в файлах * Test0. Однако я не вижу никаких упоминаний о наборе в этом файле. - person kc2001; 06.09.2019
comment
Можете ли вы предоставить MWE? Это поможет другим воспроизвести и понять ваш пример. - person mernst; 06.09.2019
comment
Я добавил пример команды к вопросам вместе с некоторыми выводами консоли, как вы предложили. - person kc2001; 17.09.2019