Я хочу написать тестовые примеры для большей части кода, мне бы хотелось узнать подробности функции аннотации JUnit @Rule
, чтобы я мог использовать ее для написания тестовых примеров. Пожалуйста, предоставьте несколько хороших ответов или ссылок, которые дают подробное описание его функциональности на простом примере.Как работает Junit @Rule?
ответ
Правила используются для добавления дополнительных функций, которые применяются ко всем тестам в тестовом классе, но более общим образом.
Например, ExternalResource выполняет код до и после испытания, без использования @Before
и @After
. Использование ExternalResource
, а не @Before
и @After
дает возможности для лучшего повторного использования кода; то же правило может использоваться из двух разных тестовых классов.
Проект был основан на: Interceptors in JUnit
Для получения дополнительной информации см JUnit wiki : Rules.
Исправление: «Например, ExternalResource выполняет код до и после теста * class *." Что-то об использовании apply(), чтобы заставить ExternalResource работать между тестами. – derekm
Я нашел this article объясняет @Rule
сек, а также, в частности проверить последний раздел «Последовательность событий в деталях»
JUnit Правила работают по принципу АОП (аспект ориентированного программирования). Он перехватывает метод теста, тем самым предоставляя возможность делать некоторые вещи до или после выполнения конкретного метода тестирования.
Возьмем пример кода ниже:
public class JunitRuleTest {
@Rule
public TemporaryFolder tempFolder = new TemporaryFolder();
@Test
public void testRule() throws IOException {
File newFolder = tempFolder.newFolder("Temp Folder");
assertTrue(newFolder.exists());
}
}
Каждый раз, когда вышеописанный метод испытания выполняется, временная папка создается и удаляется после выполнения метода. Это пример правильного кода, предоставленного Junit.
Подобное поведение также может быть достигнуто путем создания наших собственных правил. Junit предоставляет интерфейс TestRule, который может быть реализован для создания собственного правила Junit.
Вот некоторые полезные ссылки для справки:
, поэтому он удаляется без написания кода для удаления/очистки объекта? – Dror
@Dror: Да. Правильно. –
Посмотрите на источник https://github.com/junit-team/junit4/blob/master/src/main/java/org/junit/rules/TemporaryFolder.java, папка создана в обратном вызове before() метод и удаляется в методе обратного вызова after() ... – PierluigiVernetto
Т.Л., д-р для того, как это работает: JUnit окружит метод испытания в Statement объекта так statement.Execute() запускает ваш тест. Затем вместо вызова функции statement.Execute() непосредственно для запуска вашего теста JUnit передает Statement в TestRule с аннотацией @Rule. Функция «применить» TestRule возвращает новое Заявление, данное Заявление с вашим тестом. Метод Execute() нового Statement может вызывать метод выполнения Test Statement (или нет или вызывать его несколько раз) и делать все, что захочет до и после. Теперь JUnit имеет новое заявление, которое делает больше, чем просто запуск теста, и он может снова передать это на любые другие правила, прежде чем, наконец, вызовет Execute.
У оператора есть метод оценки, который не выполняется. – Hemanth
- 1. Junit @Rule и @ClassRule
- 2. JUnit Rule TemporaryFolder
- 3. Junit External Resource @Rule Order
- 4. Использование JUnit @Rule в JUnit бегуна в Eclipse
- 5. Использование JUnit @Rule с ScalaTest (например, TemporaryFolder)
- 6. Параметр JUnit в @Rule @Before и @After
- 7. Нанести JUnit Выборочная @Rule конкретного метода испытаний
- 8. Объединение @ClassRule и @Rule в JUnit 4.11
- 9. Как применить JUnit @Rule для всех тестовых примеров в наборе
- 10. Как совместить @Rule и @ClassRule в JUnit 4,12
- 11. Как использовать @Rule в Selenium JUnit провалить тест
- 12. mod_rewrite-rule не работает
- 13. ExpectedException.expect не работает. junit
- 14. Использование JUnit 4 в таймаута @Rule с AbstractTransactionalJUnit4SpringContextTests Спринга
- 15. JUnit: @ Метод переопределенного применения правил Rule, не выполненный под тестом
- 16. Selenium + junit - Conflict with @Rule и метод @After
- 17. Как работает assertArrayEquals() JUnit?
- 18. 301 Rewrite Rule Не работает
- 19. IIS7 Rewrite Rule не работает
- 20. Rewrite Rule Не работает .htaccess
- 21. Mod rewrite rule не работает
- 22. Не работает Rewrite Rule Apache
- 23. @Rule аннотации не работают при использовании TestSuite в JUnit
- 24. Параметрированное тестирование с помощью Mockito с помощью JUnit @Rule?
- 25. Какова логика объявления и присвоения @Rule (JUnit) в классе Groovy
- 26. Что делает @Rule?
- 27. Как работает Cobertura с JUnit?
- 28. Как работает takeTrue() в JUnit
- 29. Junit: определить JUnit работает или нет
- 30. iptables ip rule fwmark не работает
Я уже прошел через эту ссылку [http://cwd.dhemery.com/2011/01/what-junit-rules-are-good-for/](http://cwd.dhemery.com/2011/ 01/what-junit-rules-are-good-for /) – Dipak
Я думаю, что это похоже на концепцию инъекции, я прав? – Chao
[Правила Junit разъяснены в этой статье] (http://www.singhajit.com/junit-rules/) –