Как заставить Guice и TestNg играть в стиле a-la-AtUnit
Я использую TestNG для модульных и интеграционных тестов и Guice для DI. Я хотел бы относиться к своим тестовым классам как к другим классам - вместо непосредственной работы с инжектором, я бы лучше определил поля, помеченные @Inject, и вставлял их перед каждым тестом.
Есть ли рамки, которые это делают? Я считаю, что AtUnit делает что-то подобное, но я не уверен, как он интегрируется с TestNG, и насколько он зрелый.
3 ответа
Седрик теперь добавил @Guice
аннотация непосредственно в TestNG, чтобы упростить этот вариант использования.
- Документы: http://testng.org/doc/documentation-main.html (обновлено)
- Фоновая запись: http://beust.com/weblog/2010/12/10/testng-and-guice-a-marriage-made-in-heaven/ (немного изменилась с момента публикации!)
TestNG использует Guice для внутреннего использования, но он также позволяет легко вводить тестовые классы до того, как TestNG их увидит (используя Guice или любую другую среду, которую вы предпочитаете).
Все, что вам нужно сделать, это реализовать IObjectFactory, а затем объявить имя вашего класса, когда вы запустите TestNG с -objectfacfory.
Затем TestNG делегирует все создания объектов вашей фабрике, что позволяет вам создавать ваши экземпляры и внедрять их перед возвратом в TestNG.
Для примера того, как использовать это и взаимодействовать с группами TestNG.xml, посмотрите на мою запись в блоге http://biggerwrench.blogspot.com/2014/02/testng-using-guice-for-dependency.html