Есть отличная удаленная работа для php+codeception+jenkins+allure+docker спецов. 100% remote! Присоединиться к проекту

Запуск тестов используя JUnit+Maven (Suite,Category,Single-test)


(Alex) #1

Сейчас разбираюсь с запуском тестов через maven. Перед тем как задать вопрос, хотел бы уточнить следующее, поправьте если я не прав:
Если есть например класс который проверяет функциональность Functional1.class

	
	@Test
	public void add(){}

	@Test
	public void delete{}

	@Test
	public void edit

}```

То запуск одиночного класса со всеми его тестами, осуществляется командой ```mvn -Dtest=Functional1 test```

Если я хочу запустить все классы с тестами в пакете, я использую profile (я понимаю, что у них больше настроек, но пока остановлюсь в данной теме на конкретном примере)

```<profiles>
    <profile>
        <id>BasicTest</id>
        <properties>
            <testcase.groups>com.sl.test.Functional1</testcase.groups>
        </properties>
    </profile>
      </profiles>```

Если я хочу выполнить тестовую ситуацию, я использую Suite.

```@RunWith(Suite.class)
@SuiteClasses({Functional1.class})
public class FirstSuite {

}```

Но при выполнении будут запускаться все тесты в классах. Поэтому нам на помощь приходят @Category. С помощью них мы можем более гибко настраивать нашу тестовую ситуацию. Запуск категорий выполнял по [статье][1]:

//Маркер для категории
public interface SlowTest {}

//Запуск категории или нескольких категорий тестов.
@RunWith(Categories.class)
@IncludeCategory(SlowTest.class)
@SuiteClasses({TariffPlan.class})
public class FirstSuite {}


@Category(SlowTest.class)
public class TariffPlan extends HomePage{

@Test
public void addMovie(){}
}
@Test
public void deleteMovie(){}
}

//pom.xml



BasicTest

<testcase.groups>com.sl.test.SlowTest</testcase.groups>






maven-compiler-plugin
3.1

1.7
1.7
${project.build.sourceEncoding}



org.apache.maven.plugins
maven-surefire-plugin
2.17


org.apache.maven.surefire
surefire-junit47
2.17



${testcase.groups}
-Dfile.encoding=UTF-8





Для запуска категории нужно изменить путь в профиле, добавив месторасполажение интерфейса категории```<testcase.groups>com.sl.test.SlowTest</testcase.groups> ```
запуск осуществляется также через профиль ```mvn -P BasicTest test```

Вообщем я не совсем понимаю, правильно ли я указал как запускаются тесты? Зачем мы в surefire-junit47 указываем категории которые хотим запустить, не легче использовать команду -Dtest FirstSuite в классе которой уже прописано какие категории мы используем?
На каждую категорию идет по интерфейсу, а если еще и тестовые ситуации добавить, 100 классов получится? Когда нужно использовать профиль, если писать на каждый класс профиль 1000 классов с тестами = 1000 профилей? Вообщем я немного запутался =)


  [1]: http://internetka.in.ua/group-junit-category/

(Александр Таранков) #2

Если запутался, попробуй начать с решения конкретной задачи, а затем уже масштабировать