2015-08-10 2 views
3

У меня есть класс с несколькими тестами, разделенными на две группы. Я хочу строгое упорядочивание, когда выполняются сгруппированные тесты, так что сначала выполняются тесты в группе A, затем выполняется метод установки для группы B, а затем запускается группа B. Например:@BeforeGroups метод игнорирует dependOnGroups

@Test(groups="A") 
public void a1() { 
    // ... 
} 

@Test(groups="A") 
public void a2() { 
    // ... 
} 

@BeforeGroups(value="B", dependsOnGroups="A") 
public void setupB() { 
    // ... 
} 

@Test(groups="B") 
public void b1() { 
    // ... 
} 

@Test(groups="B") 
public void b2() { 
    // ... 
} 

Проблема я бегу в том, что, кажется, не TestNG быть почитание метод setupB. Вместо ожидаемого исполнения заказа:
a1/a2
a2/a1
setupB
b1/b2
b2/b1

Он выполняет что-то вроде этого:
a1
setupB
b1
a2
b2

Любая идея, что я делаю g неправильно с этой настройкой? Мне что-то не хватает концептуально о том, как работают группы TestNG?

ответ

1

Постарайтесь указать dependsOnGroups для методов испытаний.

public class TestClass { 

    @Test(groups="B") 
    public void b1() { 
     System.out.println("b1"); 
    } 

    @Test(groups="B") 
    public void b2() { 
     System.out.println("b2"); 
    } 

    @Test(groups="A", dependsOnGroups="B") 
    public void a1() { 
     System.out.println("a1"); 
    } 

    @Test(groups="A", dependsOnGroups="B") 
    public void a2() { 
     System.out.println("a2"); 
    } 

    @BeforeGroups(value="A", dependsOnGroups="B") 
    public void setupA() { 
     System.out.println("before"); 
    } 
} 

Может быть, я неправильно об этом, но, кажется, что если метод испытания, который принадлежит к группе был выбран для исполнения, и это не зависит от каких-либо групп или методов, он просто вызывает @BeforeGroups -annotated метода к (игнорируется dependsOnGroups). Обратите внимание, что TestNG не гарантирует порядок выполнения без какого-либо явного объявления, например. используя механизмы «зависит» или «приоритет».

Надеюсь, Седрик Боуст пошлет этот вопрос в гости.

+0

Несомненно, это имеет смысл. Это просто кажется странным, так как в документации указано, что dependOnGroups означает, что все тесты в этой группе должны были закончить выполнение до того, как группа запустится. – Jesse

0

Это может быть обходным решением, если оно работает. Не уверен, что вы можете использовать обе аннотации вместе.

@Test(groups="A") 

public void a1() { 
    // ... 
} 

@Test(groups="A") 
public void a2() { 
    // ... 
} 

@BeforeGroups(value="B") 
@AfterGroups(value="A") 
public void setupB() { 
    // ... 
} 

@Test(groups="B") 
public void b1() { 
    // ... 
} 

@Test(groups="B") 
public void b2() { 
    // .. 

. }

+1

Я действительно пробовал это. Вместо того, чтобы оба эффекта были назначены методу, метод запускается дважды: после завершения группы A и перед запуском группы B, не влияя на порядок. – Jesse

Смежные вопросы