2010-05-31 3 views
2

Есть ли какой-либо фреймворк, whick позволяет издеваться над конкретными классами, а не только интерфейсами в java 1.4? У меня есть сторонний код с классом singleton, где я хочу изменить одну функцию, не касаясь кода orignal. Является ли это возможным?Mocking with java 1.4

ответ

2

JMock 1.2 поддерживает это. Подробности here.

+0

Могу ли я использовать JMock без модульных тестов? Как я вижу, мне нужно расширить класс MockObjectTestCase? В моей ситуации было бы очень неудобно использовать модульные тесты ... – Filip

+0

Вам не нужно использовать единичный тест, но некоторые методы должны быть запущены. Я не пробовал, но вы можете проверить исходный код MockObjectTestCase и посмотреть, не делает ли он что-нибудь особенное, которое нужно вызывать отдельно. – Yishai

+0

Можно ли издеваться над каким-то классом, поэтому _all_-экземпляр какого-то класса, созданного через некоторое время, издевается? Я знаю, что это возможно в jmockit, но доступно только для более новой java. – Filip

2

Я рекомендую Mockito. Порт для Java 1.4 - available here.

+0

Я пытаюсь использовать Mockito с Java 1.4 и сталкивался с проблемой почти сразу: MyClass myClass = (MyClass) mock (MyClass.class); когда (myClass.returnsInt()). ThenReturn (???); ' thenReturn возвращает только объект. Не проблема с автоматическим боксированием/распаковкой в ​​Java 1.5, но я не знаю, как обойти эту проблему в Java 1.4. – iboisver

+0

Поцарапать это. Если я пишу 'when (myClass.returnsInt()) thenReturn (новое целое число (1));' похоже, что Mockito преобразует Integer в примитивный int при вызове 'returnInt()' и все «просто работает». – iboisver