2013-08-13 7 views
0

Мы изучаем, как использовать инъекцию зависимостей в модульные тесты (используя синтаксис JSR-330, но без явного указания ядра в базовых тестах, если это имеет значение), и мы использовали junit 4 до сих пор и были очень довольны им, но, похоже, он не предназначен для инъекций зависимостей в тестах.Необходимо использовать инъекцию зависимостей в модульных тестах - следует ли использовать junit или testng?

Вопрос в том, подходит ли junit для тестов, которые должны выполняться в контексте инъекции зависимостей, или если я просто должен переключиться на TestNG?

Просто уточнить: мы пытаемся быть агностиком DI-engine и в настоящее время смотрим на кинжал.

Я был бы признателен, если бы мнения были подкреплены фактом, спасибо.

+0

http://stackoverflow.com/questions/2425015/how-to-access-spring-context-in-junit-tests-annotated-with-runwith-and-context возможно это поможет – dantuch

+0

@ ThorbjørnRavnAnderser это заявление: «но похоже, что он не предназначен для инъекций зависимостей в тестах», имеет мало смысла. Что делает junit с DI? Может у объяснить немного может быть> – Eugene

+0

@Eugene Я хотел бы поставить что-то вроде «@Inject Foo foo» в моем тесте junit и что-то там было включено как часть тестового прогона. –

ответ

0

Junit имеют @RunWith аннотацию, проверьте org.springframework.test.context.junit4.SpringJUnit4ClassRunner

как пример DI реализации в JUnit тесты

1

Предполагая, что вы используете Spring Framework

Вы можете аннотировать ваши тестовые классы Junit следующим образом:

@RunWith(SpringJUnit4ClassRunner.class) 
@ContextConfiguration("classpath:appTest-context.xml") 
public class AppServiceTest{ 
    ... 
    ... 
} 

И insid e appTest-context.xml имеют регулярные настройки конфигурации Spring для ввода всех зависимостей.

+1

ОП не сказал, что существует Весна –

+0

Возможно, у меня есть неправильное предположение из названия: 'dependency injection' let я сделаю заметку в своем ответе. – anubhava

0

Я не уверен в JUnit (но, видя другие ответы, похоже, что это возможно и с JUnit), но в нашем приложении мы использовали TestNG для запуска тестовых примеров, и мы были в состоянии впрыснуть зависимости.

Смежные вопросы