Я пытаюсь выполнить модульный тест класса, который нуждается в зависимости. Создание класса зависимости напрямую невозможно, поскольку конструктор зависимости имеет логику, которая нуждается в объектах, доступных только во время выполнения.Избегайте исключения javax/ejb/EJBLocalObject, когда насмехается с PowerMock
Однако, когда я пытаюсь высмеять класс зависимостей, я получаю исключение «java.lang.NoClassDefFoundError: javax/ejb/EJBLocalObject». Как я могу обойти это? Единственное решение, о котором я могу сейчас думать, это изменить ClassToTest на использование интерфейса вместо фактического конкретного класса Dependency.
Некоторые код, чтобы показать, как я в настоящее время пытается издеваться зависимость:
package mockTest;
import org.junit.Test;
import org.powermock.api.mockito.PowerMockito;
public class MockTest {
@Test
public void performTest() {
// Mock the dependency and create the class to test
Dependency dependency = PowerMockito.mock(Dependency.class);
ClassToTest classToTest = new ClassToTest(dependency);
// Invoke a method in classToTest, assert..
}
}
Дальнейшее уточнение:
Вопрос: Является ли Зависимая класс осущ интерфейса?
ClassToTest (зависимый класс) является конкретным классом и не имеет интерфейсов, хотя он легко мог - я контролирую источник. Класс Dependency - это конкретный класс, который не реализует интерфейсы, и я не контролирую источник.
Вопрос: Вы только проходите в объекте «зависимость», потому что он создается в обычном конструкторе, поэтому, предоставляя один, вы пытаетесь приручить рабочий Mock вместо созданного?
Да. ClassToTest использует методы зависимости, которые вызывают зависимость, например, вызовите JDBC. Я хочу иметь возможность либо перейти в фактическую зависимость (от кода реализации), либо сделать mock (из тестового кода).
В: Является ли зависимость статической?
Нет, зависимость или методы зависимостей не являются статическими.
1. Является ли Зависимая класс интерфейс интерфейса? 2. Переходите ли вы только к объекту «зависимость», потому что он создается в обычном конструкторе, поэтому, предоставляя один, вы пытаетесь и приватируете рабочий Mock вместо созданного? 3. Является ли зависимость статической? – Walls