Благодаря моему предыдущему вопросу , у моей платформы теперь есть бегунок, который будет считать теги @Category, чтобы я мог получить четкое представление о покрытии кода из моего тестирования.Мой следующий шаг - абстрагирование бегуна, поскольку одна платформа обрабатывает несколько приложений, разделенных на пакеты.
+---main
+---test
+---java
+---com
+---company
+---app
¦ +---app1
¦ ¦ +---common
¦ ¦ +---page
¦ ¦ +---test
¦ +---app2
¦ +---common
¦ +---page
¦ +---test
+---core
+---categories
Фреймворк использует модель PageObject, поэтому page
будет содержать детали каждой страницы, common
будет дляфункций, общих для всего приложения, и test
содержит фактические тесты с именем *Test.class
. В настоящее время бегун находится в том же пакете, что и тесты каждого приложения.Но каждый из них представляет собой точно такой же код, за исключением переменной, содержащей путь к пакету, и @SuiteClasses (), перечисляющей каждый тестовый класс.
@RunWith(Suite.class)
@Suite.SuiteClasses({
FirstTest.class,
SecondTest.class,
ThirdTest.class,
_CleanUpTest.class})
public class _CategoriesCount {
private static final String MAIN_TEST_PACKAGES = "com.company.app.app1.test";
private static final String MAIN_CATEGORY_PATH = "com.company.core.categories.";
...
}
Я надеюсь создать внутри себя один бегунпакет core
на основе либо командной строки, либо переменной в pom.xml, чтобы указать папку пакета приложения, и бегун автоматически конфигурирует себя.Это будет иметь несколько преимуществ:
- Динамически читать в файлах * Test.class, поэтому, если создается новый набор тестов, тестировщик не должен забывать добавить его в бегун.файл
- Есть только один бегун;только одно место для исправления / улучшения вместо десятков
К сожалению, все, что я видел, требует, чтобы аннотации были статичными.Я полагаю, что это происходит из-за времени, когда бегун читается перед выполнением кода.Итак, я вижу, есть ли какой-то способ, которым я не нахожу, чтобы добавить -DtestApp=app2
в командную строку, и это, в свою очередь, может заполнить раннер.Я уже использую плагин surefire для установки других переменных в коде, поэтому надеюсь, что смогу сделать то же самое с аннотациями.