а нельзя обернуть это в скрипт какой-нибудь?
мне кажется можно запараметризовть эти тесты и один из параметров использовать для включения ?
Конечно можно) я вот думаю что может уже что-то есть готовое - мои костыли вряд ли будут лучше.
Наверно реализовывать можно через кастомные лиснеры
- перехватывать в них методы которые инвокаются и запускать / отключать
- но останутся издержки на запуск
- не понятно как будут себя вести бефор методы в этом случае
Коробочная реализия - группы…
но это уныло делать 10 групп только для запусков и дёргать разные xml-ки
ПС бизнес кейс такой:
- сервер слабый - параллелить тесты не вариант.
- билдов много - за день все тесты в рандомном режиме прогонятся на 90%
- такой пар вайзинг получится
А почему разные xml-ки? Разве в testng нельзя в одном файле создать несколько групп? Ну а группу тестов можно выбирать рандомно перед запуском тестов создав, например, groovy или python скрипт на ci.
И почему параллелить не вариант, outofmemory и сервер умирает? Хотя бы два потока пойдет?
@ VatslauX - преобразование из одного XML в XML это кажется задача решаемая многими способами напр. в контексте
https://maven.apache.org/guides/mini/guide-using-ant.html
покажите п-та свой суперхеви testng.xml
из спортивного интереса любопытно …
Вот такой код с вероятностью 90% пропустит каждый тест кейс.
То есть с вероятностью 10% запустит каждый:
import org.testng.SkipException
@BeforeMethod
void beforeMethod(Method method)
{
if (new Random().nextInt() % 10 != 0) {
throw new SkipException ('skipping ' + method.toString());
}
}
Если в некоторый случаях нужно запускать все тесты, то можно добавить параметр runAll (нужно его взять откуда-то - из конфига, environment …:
import org.testng.SkipException
@BeforeMethod
void beforeMethod(Method method)
{
if (new Random().nextInt() % 10 != 0 & !runAll) {
throw new SkipException ('skipping ' + method.toString());
}
}
Похоже это удобный вариант. Спасибо
runAll тоже удобно - можно как параметр их xml передать
Загрузка по процессору во время рендеринга страниц под 90-100%
нет смысла параллелить
нет спасибо) хочу чтобы CI только дёргал xml и так осталось в будущем
максимально примитивно
ПС maven must die) Viva la Gradle
@VatslauX не понял в чем проблема всегда рисовать xml перед запуском gradle
или mvn
вы же не возражаете что код компилируется и "jar"ится…
пока не использовал и небыл а курске что YAML проще - только если в vi крафтить тест конфигурации … бросьте ссылку (на работе и дел будет много
). спасибо.
как говорится но оффенз просто правда в нек странах каникул после нг нету
http://testng.org/doc/documentation-main.html#yaml
сначала подумал что из коробки поддержка, но дочитал до конца - через генерацию xml - решил забить на это
PP даже замутил датапровайдер на ямле
http://paypal.github.io/SeLion/html/java-docs/1.0.0/dataproviders-apis/index.html?com/paypal/selion/platform/dataprovider/impl/YamlDataProviderImpl.html
Матерь-василиса. Что это страницы такие. Мы вроде бы не в 2000-м году
@ VatslauX учтите если в самом деле собираетесь делать путем TestNg запуск 10% тестов с рандомной выборкой - #7 от пользователя SlavikF то там все немного не так просто … для 6.14.3 по крайней мере
я тут посмотрел что происходит после швыряния org.testng.SkipException
- получился проектик на гитхабе - GitHub - sergueik/testng_random_set_test_picker: TestNg subset randomized class/method picker
супер! спасибо гляну как оно
Самая примитивная реализация чистыми средствами TestNG + Java 8:
public class MethodInterceptor implements IMethodInterceptor {
@Override
public List<IMethodInstance> intercept(List<IMethodInstance> methods, ITestContext context) {
Collections.shuffle(methods);
long sizeLimit = (long) Math.ceil(methods.size() * 0.1);
return methods.stream().limit(sizeLimit).collect(toList());
}
}
спасибо - я в своем проекте добавил инвентаризацию и нескольно способов (работающий и не работающий
ваш IMHO какой то супер сложный объясните как оно делает свое случайное дело…спасибо еще раз