Пользовательские аннотации для настройки тестов - PullRequest
1 голос
/ 11 апреля 2010

Прежде всего позвольте мне начать с того, что я думаю, что для этого могут использоваться пользовательские аннотации, но я не совсем уверен.

Мне бы хотелось иметь набор аннотаций, которыми я могу украсить некоторые тестовые классы. Аннотации позволят мне настроить тест для разных сред. Пример:

public class Atest extends BaseTest{ 
     private String env;

     @Login(environment=env)
     public void testLogin(){
     //do something
     }

     @SignUp(environment=env)
     public void testSignUp(){
     //do something
     }
}

Идея заключается в том, что аннотация входа в систему будет использоваться для поиска имени пользователя и пароля, которые будут использоваться в методе testLogin для тестирования процесса входа в систему для конкретной среды.

Так что мой вопрос (а) это возможно сделать с аннотациями? Если это так, я не смог найти приличного Howto онлайн, чтобы сделать что-то вроде этого. Кажется, все, что вам нужно, это то, как вы можете создавать свои собственные аннотации и базовый процессор, но я не нашел ничего для такой ситуации. Идеи?

Ответы [ 2 ]

0 голосов
/ 11 апреля 2010

Посмотрите на функцию "группа" в TestNG . Вы можете сделать что-то вроде этого:

  public class LoginTest {
     private UserData userData;

     @BeforeMethod(groups="activedirectory")
     public void setup() {
         userData = ...
     }

     @BeforeMethod(groups="ldap")
     public void setup() {
         userData = ...
     }

     @Test(groups={"activedirectory","ldap"})
     public void testLogin() {
         // ...
     }
 }

Затем вы можете выбрать, следует ли запускать тесты "ldap" или "activedirectory" в зависимости от тестового сервера. Я использую функцию групп, чтобы отделить «модульные» тесты от «функциональных» тестов, например, когда последние требуют полностью настроенной среды, а первые - нет. Я также поместил некоторые тесты в группу «manual», которые выполняются только на машинах разработчика.

0 голосов
/ 11 апреля 2010

Хорошая идея. Возможно, вы могли бы написать аспект, который перехватывает аннотированные методы, подобные этому, ища имя пользователя и пароль и устанавливая их для членов ThreadLocal в классе (ThreadLocal, если вы хотите использовать его в многопоточных средах). Затем метод теста получает имя пользователя и пароль от участников.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...