#android #unit-testing #tdd #jmock
#Android #модульное тестирование #tdd #jmock
Вопрос:
В моем модульном тестировании я попробовал следующее:
import org.jmock.Mockery;
import org.jmock.Expectations;
import org.jmock.lib.legacy.ClassImposteriser;
public class MyActivityTest extends ActivityUnitTestCase<MyActivity> {
private Mockery context = new Mockery() {{
setImposteriser(ClassImposteriser.INSTANCE);
}};
...
}
Мое предполагаемое использование — имитировать подкласс приложения моего проекта. Однако, когда я запускаю свои тесты, я получаю java.lang.Ошибка ExceptionInInitializerError. Могу ли я не использовать расширение ClassImposteriser для запуска модульных тестов Android?
Комментарии:
1. В качестве альтернативы, должен ли я использовать другой фреймворк mocking?
Ответ №1:
Это то, что я подробно изучил несколько месяцев назад. К сожалению, виртуальная машина dalvik в настоящее время не поддерживает манипуляции с байт-кодом, которые требуются для моделирования конкретных классов.
Таким образом, вы не сможете использовать какую-либо библиотеку-макет для моделирования класса. Вам нужно будет извлечь интерфейс для каждого класса, который вы хотите создать в своих тестах Android, и вместо этого создать макет интерфейса.
Немного подробнее об ограничениях davlik: