Мне нужно написать тесты юнита для приложения Джерси. Теперь я хочу, чтобы проверить зависимость инъекций и проблема, я создал класс, как это:Класс def не найден: org/glassfish/hk2/ComponentException
@RunWith(Hk2Runner.class)
public class BinderTest {
@Inject
private SomeClass someClass;
@Test
public void passingTest() {
someClass.getSomething("asd", "asd", "asd");
Assert.assertTrue(true);
}
}
При запуске выход:
java.lang.NoClassDefFoundError: org/glassfish/hk2/ComponentException
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:760)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:467)
at java.net.URLClassLoader.access$100(URLClassLoader.java:73)
at java.net.URLClassLoader$1.run(URLClassLoader.java:368)
Я пытаюсь найти зависимость имея этот класс, чтобы добавить файл pom.xml, но ничего не нашел .. Вы, ребята, знаете, какая зависимость maven содержит упомянутый класс ComponentException?
Dependency добавлены для того, чтобы иметь Hk2Runner класс:
<dependency>
<groupId>org.glassfish.hk2</groupId>
<artifactId>auto-depends</artifactId>
<version>2.0.5</version>
</dependency>
да теперь проблема с зависимостями решена :) Я оставил только hk2-junitrunner зависимость. Однако теперь проблема заключается в следующем: org.glassfish.hk2.api.UnsatisfiedDependencyException: не было объекта для инъекций в SystemInjecteeImpl (requiredType = CodeProvider, parent = BinderTest, qualifiers = {}, position = -1, optional = false, self = false, unqualified = null, 1047503754) Как я могу вводить классы в этот тестовый класс? – azalut
@azalut Хмм, я не помню, будет ли автоматически вызываться 'before'. Вы должны попытаться переопределить 'before' и вызвать [' initialize'] (https://hk2.java.net/hk2-junitrunner/apidocs/org/jvnet/hk2/testing/junit/HK2Runner.html#initialize%28java. lang.String,% 20java.util.List,% 20java.util.List% 29), чтобы ваши классы '@ Service' искали (см. Javadoc). – Tunaki