Перегруженный параметризованный тестовый прогон не работает с JUnit4Provider - PullRequest
2 голосов
/ 02 марта 2012

Я использую следующий тестовый прогон: http://code.google.com/p/migen/source/browse/trunk/java/src/uk/ac/lkl/common/util/testing/LabelledParameterized.java?r=3789

Он меняет имя параметризованных тестов на более удобочитаемое.то есть: ожидаемый результат - "myDefinedTestName"

Когда я запускаю с помощью eclipse, он работает правильно: я вижу новые имена.Когда я использую JUnit4Provider :

final JUnit4Provider provider = new JUnit4Provider(params);
provider.invoke(testClass);

, это не так.то есть: я получаю "oldTestName [0]".Там нет ошибки.Почему и как это исправить?


Я пытался использовать JUnitCore безуспешно.Я сделал следующее:

TestRunner

import org.junit.runner.JUnitCore;

public class TestRunner {

/**
 * @param args
 */
public static void main(final String[] args) {
    final JUnitCore provider = new JUnitCore();
    provider.addListener(new TestJUnitCore4Listener());
    provider.run(UpdateBackgroundImageParameterizedTests.class);

}

}

Слушатель

import org.junit.runner.Description;
import org.junit.runner.notification.RunListener;

public class TestJUnitCore4Listener extends RunListener {

    @Override
    public void testFinished(final Description description) throws Exception {
         System.out.println(description.getDisplayName() + " "
            + description.getMethodName());
    }

}

Тесты

import static org.junit.Assert.assertTrue;

import java.util.Arrays;
import java.util.Collection;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized.Parameters;

@RunWith(LabelledParameterized.class)
public class UpdateBackgroundImageParameterizedTests {

// Fields
private final String datum;
private final String expectedResult;

/**
 * Constructor is called for every parameter set in generateData()
 * 
 * @param datum
 *            input to be used in tests
 * @param expectedResult
 *            output expected by tests
 */
public UpdateBackgroundImageParameterizedTests(final String datum,
        final String expectedResult) {
    super();
    this.datum = datum;
    this.expectedResult = expectedResult;
}

/**
 * @return a list of expected inputs and outputs
 */
@Parameters
public static Collection<Object[]> generateData() {
    return Arrays.asList(new Object[][] { { "sunny", "a" }, // 0
            { "cloudy", "a" }, // "a"
            { "rain", "a" }, // 2
            { "heavy snow", "a" }, // 3
            { "occasionally thundery", "a" }, // 4
            { "clear skies", "a" }, // 5
            { "error", "a" } }); // 6
}

/**
 * Test updateBackgroundImage using parameter injection for feed Test run
 * for all parameters specified in generateData()
 * 
 * @throws Exception
 */
@Test
public void testUpdateBackgroundImage() throws Exception {
    assertTrue(true);
}

}

с использованием тестового бегуна: http://code.google.com/p/migen/source/browse/trunk/java/src/uk/ac/lkl/common/util/testing/LabelledParameterized.java?r=3789

, который дает вывод:

testUpdateBackgroundImage[0](UpdateBackgroundImageParameterizedTests) testUpdateBackgroundImage[0]
testUpdateBackgroundImage[1](UpdateBackgroundImageParameterizedTests) testUpdateBackgroundImage[1]
testUpdateBackgroundImage[2](UpdateBackgroundImageParameterizedTests) testUpdateBackgroundImage[2]
testUpdateBackgroundImage[3](UpdateBackgroundImageParameterizedTests) testUpdateBackgroundImage[3]
testUpdateBackgroundImage[4](UpdateBackgroundImageParameterizedTests) testUpdateBackgroundImage[4]
testUpdateBackgroundImage[5](UpdateBackgroundImageParameterizedTests) testUpdateBackgroundImage[5]
testUpdateBackgroundImage[6](UpdateBackgroundImageParameterizedTests) testUpdateBackgroundImage[6]

1 Ответ

1 голос
/ 10 марта 2012

Тот же код работал при использовании JUnitParams вместо тестового бегуна.Таким образом, проблема должна быть с LabelledParameterized .

...