Ошибка при использовании Generics с JUnit 4 Theories - PullRequest
0 голосов
/ 10 февраля 2019

Я сталкиваюсь со странной ошибкой при попытке смешать дженерики с JUnit 4 Theories.Мой код ниже.В основном я пытаюсь написать единственный метод, который проверяет подтипы Comparable Interface.Несмотря на то, что метод должен принимать любой подтип сопоставимого, за один раз должен проверяться только один подтип (таким образом, строки и целые числа - оба подтипа Comparable - никогда не должны проверяться вместе).

Просто в качестве ссылки,это задание, которое явно требует использования теорий и обобщений, поэтому я не могу использовать другую часть JUnit или опускать использование обобщений.

@RunWith(Theories.class)
public class ComparableTheory{

    @DataPoints public static String[] stringPoints() {
            return new String[] {
                    "abc",
                    "acc"
            };
    }

    @DataPoints public static String[] stringPoints2() {
            return new String[] {
                    "xyz",
                    "mno"
            };
    }

    @DataPoints public static Integer[] integerPoints() {
            return new Integer[] {
                    1, 2, 3
            };
    }

    @Theory
    public <T extends Comparable> void comparableTransitiveTheory(T a, T b, T c) {
            assumeTrue (Math.signum(a.compareTo(b)) == Math.signum(b.compareTo(c)));
            assertTrue (Math.signum(a.compareTo(c)) == Math.signum(a.compareTo(b)));
    }
}

Я получаю следующую ошибку:

JUnit version 4.13-beta-2
.E
Time: 0.002
There was 1 failure:
1) initializationError(ComparableTheory)
org.junit.runners.model.InvalidTestClassError: Invalid test class 'ComparableTheory':
1. Method comparableTransitiveTheory() contains unresolved type variable T
2. Method comparableTransitiveTheory() contains unresolved type variable T
3. Method comparableTransitiveTheory() contains unresolved type variable T
at org.junit.runners.ParentRunner.validate(ParentRunner.java:511)
at org.junit.runners.ParentRunner.<init>(ParentRunner.java:91)
at org.junit.runners.BlockJUnit4ClassRunner.<init>(BlockJUnit4ClassRunner.java:74)
at org.junit.experimental.theories.Theories.<init>(Theories.java:73)

FAILURES!!! 
Tests run: 1,  Failures: 1

В качестве справки я запускаю и компилирую следующие команды:

javac -cp .:"*" ComparableTheory.java
java -cp .:"*" org.junit.runner.JUnitCore ComparableTheory

файлы hamcrest-2.1.jar и junit-4.13-beta-2.jar находятся в моем рабочем каталоге (и, следовательно, в моем пути к классам).

...