Кто-то разбивает варёное яйцо с острого концы, а кто-то с тупого. Кто-то предпочитает использовать JUnit, а кто-то любит TestNg.
Простой тест с применением JUnit описан в первой статье цикла. Перепишу этот же тест на TestNG.
Для начала изменю записимости.
- Нужно добавить артефакт testng, при этом явно укажу, что JUnit за собой тащить не нужно. Это даст нам аннтотации @Test и ассерты
- Ну и powermock-у нужно сказать, что власть поменялась. Это артефакт powermock-module-testng
pom.xml теперь выглядит вот так:
<properties>
<powermock.version>1.6.6</powermock.version>
<easymock.version>3.5.1</easymock.version>
<testng.version>6.13.1</testng.version>
</properties>
<dependencies>
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<version>${testng.version}</version>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.easymock</groupId>
<artifactId>easymock</artifactId>
<version>${easymock.version}</version>
</dependency>
<dependency>
<groupId>org.powermock</groupId>
<artifactId>powermock-module-testng</artifactId>
<version>${powermock.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.powermock</groupId>
<artifactId>powermock-api-easymock</artifactId>
<version>${powermock.version}</version>
</dependency>
</dependencies>
Теперь сам тест.
- @RunWith(PowerMockRunner.class) теперь не нужна, testng делает всё сам
- Чтобы testng сделал всё сам, класс теста должен extends PowerMockTestCase
- Перепиливаем импорты.
Собственно, всё. Тест корректно отрабатывает.
Исходный код — на моём гитхабе, ветка testng.