Исходный код лежит здесь: https://github.com/Fuud/new-instance-transformer (на момент поста ревизия 486d973)
Допустим у нас есть два класса:
Мы хотим протестировать метод CreateInConstructor.getText(). Для этого надо подменить classToMock на затычку-заглушку.
Мне известно два фреймворка, решающих эту проблему: PowerMock и JMockit. Первый не дружит с JMock, а второй представляет отдельную тестовую систему с кучей черной и белой магии. Резюмируя: надо писать что-то свое.
Что нужно:
1) уметь подменять создание нового объекта на получение откуда-то нового. javassist.CodeConvertor.replaceNew()
2) загружать агент при первой необходимости. com.sun.tools.attach.VirtualMachine.loadAgent (это часть attach api)
3) перетрансформировать классы после зарузки агента: Instrumentation.retransformClasses().
После реализации можно делать так:
суббота, 6 августа 2011 г.
Подписаться на:
Сообщения (Atom)