И Testng, и Junit - это среда тестирования, используемая для модульного тестирования. TestNG похож на JUnit. В него добавлено несколько дополнительных функций, что делает TestNG более мощным, чем JUnit.
Это руководство в основном ориентировано на анализ возможностей JUnit и TestNG. Это помогает разработчикам решить, какой фреймворк следует использовать для модульного тестирования. Давайте сначала проанализируем сходство между TestNG и JUnit4.
TestNG - это среда тестирования, вдохновленная JUnit и NUnit.
Вот таблица, в которой показаны функции, поддерживаемые JUnit и TestNG.
Сравнение функций JUnit4 и TestNG
И TestNG, и JUnit4 выглядят одинаково, за исключением одной или двух функций. Давайте сравним их, чтобы быстро решить, какая технология лучше подходит для модульного тестирования. В таблице ниже представлены функции, поддерживаемые обоими:
Аннотации
И JUnit, и TestNG используют аннотации, и почти все аннотации похожи.
TestNG использует @BeforeMethod, @ AfterMethod, аналогично @Before, @ After в JUnit4.
И TestNG, и Junit4 используют @Test (timeout = 1000) для тайм-аута. Более подробную информацию смотрите в таблице ниже.
SN | Описание | TestNG | JUnit 4 |
---|---|---|---|
1 | Аннотация теста | @Тест | @Тест |
2 | Выполняется перед вызовом первого тестового метода в текущем классе | @BeforeClass | @BeforeClass |
3 | Выполняется после всех тестовых методов в текущем классе | @После занятий | @После занятий |
4 | Выполняется перед каждым методом тестирования | @BeforeMethod | @Перед |
5 | Выполняется после каждого метода тестирования | @AfterMethod | @После |
6 | аннотация для игнорирования теста | @Test (включить = ложь) | @ignore |
7 | аннотация для исключения | @Test (ожидаемые исключения = ArithmeticException.class) | @Test (ожидается = ArithmeticException.class) |
8 | тайм-аут | @Test (тайм-аут = 1000) | @Test (тайм-аут = 1000) |
9 | Выполняется перед всеми тестами в комплекте | @BeforeSuite | н / д |
10 | Выполняется после всех тестов в пакете | @AfterSuite | н / д |
11 | Выполняется перед запуском теста | @BeforeTest | н / д |
12 | Выполняется после запуска теста | @AfterTest | н / д |
13 | Выполняется перед вызовом первого тестового метода, принадлежащего любой из этих групп. | @BeforeGroups | н / д |
14 | запустить после последнего метода тестирования, который принадлежит любой из групп здесь | @AfterGroups | н / д |
Suite Test
Наборы используются для одновременного выполнения нескольких тестов. Наборы могут быть созданы с использованием как TestNG, так и JUnit4. Однако в TestNG комплекты более мощные, так как в нем используются совсем другие методы выполнения тестов. Давайте разберемся с этим, используя фрагмент кода, как показано ниже:
Использование JUnit4
Ниже класс описывает использование набора при работе с JUnit4:
пакет guru99.junit;import org.junit.runner.RunWith;import org.junit.runners.Suite;@RunWith (Suite.class)@ Suite.SuiteClasses ({SuiteTest1.class,SuiteTest2.class,})public class JunitTest {// Этот класс остается пустым, он используется только в качестве держателя для вышеуказанных аннотаций}
Использование TestNG
TestNG использует xml для объединения всех тестов в одном месте. Ниже xml описывается использование набора при работе с TestNG:
<классы>
Игнорировать тест
Используя оба варианта, мы можем пропустить тест. Давайте посмотрим на него на примере кода, как показано ниже:
Использование JUnit4
Ниже фрагмент кода описывает использование аннотации @ignore при работе с JUnit4:
@ Игнорироватьобщедоступный метод void1 (){System.out.println («При использовании @Ignore это выполнение игнорируется»);}
Использование TestNG
Во фрагменте кода ниже описано использование аннотации @Test (enabled = false) при работе с TestNG:
@Test (включено = ложь)public void TestWithException (){System.out.println («Метод следует игнорировать, поскольку он еще не готов»);}
Исключительный тест
Тестирование исключений доступно как в TestNG, так и в JUnit4. Он используется для проверки, какое исключение выбрано из теста?
Использование JUnit4
Во фрагменте кода ниже описывается использование теста исключения при работе с JUnit4:
@Test (ожидается = ArithmeticException.class)общественная недействительность DivideByZero (){Int i = 1/0;}
Использование TestNG
Во фрагменте кода ниже описывается использование теста исключения при работе с TestNG:
@Test (ожидаемые исключения = ArithmeticException.class)общественная недействительность DivideByZero (){Int i = 1/0;}
Тайм-аут
Эта функция реализована как в TestNg, так и в JUnit4. Timeout используется для завершения теста, который занимает больше указанного времени (в миллисекундах).
Использование JUnit4
Во фрагменте кода ниже описывается использование теста тайм-аута при работе с JUnit4:
@Test (тайм-аут = 1000)общедоступный метод void1 (){в то время как (правда);}
Использование TestNG
Во фрагменте кода ниже описывается использование теста тайм-аута при работе с TestNG:
@Test (timeOut = 1000)общедоступный метод void1 (){в то время как (правда);}
Параметризованный тест
JUnit обеспечивает более простой и понятный подход к тестированию, известный как параметризованный тест. И TestNG, и JUnit поддерживают параметризованный тест, но отличаются способом определения значения параметра. Давайте посмотрим на это по одному.
Использование JUnit4
Аннотации «@RunWith» и «@Parameter» используются для предоставления значения параметра для модульного теста. Аннотация @Parameters должна возвращать List []. Этот параметр будет передан в конструктор класса в качестве аргумента.
@RunWith (значение = Parameterized.class)public class JunitTest {номер privateint;общедоступный JunitTest6 (целое число){this.number = число;}@ Параметрыобщедоступная статическая коллекция
Использование TestNG
В TestNG файл XML или «@DataProvider» используется для предоставления параметра для тестирования.
Здесь аннотации @Parameters, объявленной в методе, нужен параметр для тестирования. Данные, используемые в качестве параметра, будут предоставлены в файлах конфигурации TestNG XML. Поступая так, мы можем повторно использовать один тестовый набор с разными наборами данных и получать разные результаты.
public class Test1 {@Тест@Parameters (значение = "число")public void parameterTest (int number){System.out.println ("Параметризованное число: + число);}}
См. Ниже XML-файл, который будет использоваться для вышеуказанного класса:
<имя параметра = "число" значение = "2" /><классы>
Резюме :
Мы подробно рассмотрели сравнение JUnit4 и TestNG. Мы также видели, что оба они похожи, за исключением параметризованного теста и теста зависимости. Вкратце мы можем сказать, что исходя из гибкости и требований, мы можем выбрать любой из них для модульного тестирования.
- Следующий