UPDATE table SET nameofdatefield = ADDDATE(nameofdatefield, 2) WHERE ...
Ответ через пользовательский org.testng. IMethodSelector:
Его includeMethod () может исключить любой метод, который мы хотим, как общественность не - аннотируемый метод.
Однако для регистрации пользовательского Java MethodSelector необходимо добавить его к экземпляру XMLTest, управляемому любым TestRunner, что означает, что Вам нужен Ваш собственный TestRunner.
Но, для создания пользовательского TestRunner необходимо зарегистрировать TestRunnerFactory через-testrunfactory опцию.
НО это,-testrunfactory никогда не принимается во внимание классом TestNG..., таким образом, необходимо также определить пользовательский класс TestNG:
Хорошо... это - кошмар. Но это - также проблема кода, таким образом, это должно быть немного оспаривания ;)
Весь код доступен в отрывках DZone.
Как обычно, для проблемы кода:
Обновление от Mike Stone:
Я собираюсь принять это, потому что это звучит достаточно близким к тому, что я закончил тем, что делал, но я полагал, что добавлю, что я сделал также.
В основном я создал аннотацию Групп, которая ведет себя как свойство групп Теста (и другой) аннотации.
Затем я создал GroupsAnnotationTransformer, который использует IAnnotationTransformer для рассмотрения всех тестов и тестовых определяемых классов, затем изменяет тест для добавления групп, который работает отлично с исключением группы и включением.
Измените сборку для использования нового преобразователя аннотации, и все это работает отлично!
Хорошо... один протест состоит в том, что это не добавляет группы к неметодам тестирования..., потому что в то время, когда я сделал это, был другой преобразователь аннотации, который позволяет Вам преобразовать ЧТО-ЛИБО, но это так или иначе не было включено в TestNG, который я использовал по некоторым причинам..., таким образом, это - хорошая идея сделать Ваш перед/после того, как аннотируемыми методами к alwaysRun=true..., который достаточен для меня.
Конечный результат, я могу сделать:
@Groups({ "myGroup1", "myGroup2"})
public class MyTestCase {
@Test
@Groups("aMethodLevelGroup")
public void myTest() {
}
}
И я заставил преобразователь работать с разделением на подклассы и всем.
Я не уверен, как работы наследования аннотации для TestNG, но этого статья могут быть несколько полезными.
На самом деле, в этом мае справка лучше , смотрят inheritGroups.
Это казалось бы мне как следующая проблема кода (общественное сообщение Wiki):
Как смочь выполнить все методы тестирования Расширенного класса от группы 'aGlobalGroup' без:
Первый ответ легок:
добавьте класс TestNG (группы = {"aGlobalGroup"}) на уровне Базового класса
Та группа обратится ко всем открытым методам и Базового класса и Расширенного класса.
НО: даже открытые методы non-testng (без аннотации TestNG) будут включены в ту группу.
ПРОБЛЕМА: избегайте включая те non-TestNG методы.
@Test(groups = { "aGlobalGroup" })
public class Base {
/**
*
*/
@BeforeClass
public final void setUp() {
System.out.println("Base class: @BeforeClass");
}
/**
* Test not part a 'aGlobalGroup', but still included in that group due to the class annotation. <br />
* Will be executed even if the TestNG class tested is a sub-class.
*/
@Test(groups = { "aLocalGroup" })
public final void aFastTest() {
System.out.println("Base class: Fast test");
}
/**
* Test not part a 'aGlobalGroup', but still included in that group due to the class annotation. <br />
* Will be executed even if the TestNG class tested is a sub-class.
*/
@Test(groups = { "aLocalGroup" })
public final void aSlowTest() {
System.out.println("Base class: Slow test");
//throw new IllegalArgumentException("oups");
}
/**
* Should not be executed. <br />
* Yet the global annotation Test on the class would include it in the TestNG methods...
*/
public final void notATest() {
System.out.println("Base class: NOT a test");
}
/**
* SubClass of a TestNG class. Some of its methods are TestNG methods, other are not. <br />
* The goal is to check if a group specify in the super-class will include methods of this class. <br />
* And to avoid including too much methods, such as public methods not intended to be TestNG methods.
* @author <a href="http://stackoverflow.com/users/6309/vonc">VonC</a>
*/
public static class Extended extends Base
{
/**
* Test not part a 'aGlobalGroup', but still included in that group due to the super-class annotation. <br />
* Will be executed even if the TestNG class tested is a sub-class.
*/
@Test
public final void anExtendedTest() {
System.out.println("Extended class: An Extended test");
}
/**
* Should not be executed. <br />
* Yet the global annotation Test on the class would include it in the TestNG methods...
*/
public final void notAnExtendedTest() {
System.out.println("Extended class: NOT an Extended test");
}
}
TestNG выполнит все открытые методы от класса с @Test аннотацией. Возможно, Вы могли изменить методы, которые Вы не хотите, чтобы TestNG выполнил, чтобы быть непубличные
Можно определить @Test аннотацию на уровне метода, который допускает максимальную гибкость.
public class DBTestBase {
@BeforeTest(groups = "db-test")
public void beforeTest() {
System.out.println("Running before test");
}
public void method1() {
Assert.fail(); // this does not run. It does not belong to 'db-test' group.
}
@Test(groups = "db-test")
public void testMethod1() {
Assert.assertTrue(true);
}
}
Делает это работает на Вас, или я пропускаю что-то от Вашего вопроса.