Я хочу сохранить тип в качестве параметра, но когда я вернуть его и проверить в рамках теста JUnit, я получаю что-то вродеКак вернуть тип I, явно переданный как параметр?
Expected: an instance of Java.lang.String
but: <class java.lang.String> is a java.lang.class
Это является minimalized примером класса ...
public class ContextVariableResult<T> {
private Class<T> type;
public ContextVariableResult(Class<T> type) {
this.type = type;
}
//TODO doesn't work
public Class<T> getType() {
return type;
}
}
I pass String.class как параметр конструктора.
Мой тест выглядит так ....
assertThat(result.getType(), instanceOf(String.class));
Я думал, что мой Hamcrest согласовани это неправильно, но я не могу использовать есть (String.class) или Isa (String.class) из-за ошибки компиляции:
The method assertThat(T, Matcher<? super T>) in the type Assert is not applicable for the arguments (Class<capture#3-of ?>,
Matcher<String>)
Я уже пытался вернуть объект Reflection типа, я также пытался бросить в Par ameterizedType, но затем я получаю ClassCastExceptions и так далее.
Я хочу, чтобы результат метода был «String». Что я не так? Было бы намного лучше, если мне не нужно передавать параметр «String.class», но тогда я думаю, что всегда получаю тип стирания проблемы.
assertEquals работает, но когда я пытаюсь использовать первый, Eclipse говорит мне: «Метод assertThat (T, Matcher super T>) в типе Assert не применим для аргументов (Class, \t Matcher ) ' –
Bevor