2010-06-25 2 views
7

я должен написать следующие единичные случаи испытания в TestNG:Передача выход одного метода испытания на другой метод TestNG

  1. saveProductTest, который будет возвращать PRODUCTID если детали продукта успешно сохранены в БД.

  2. modifyProductTest, он должен использовать ранее сохраненный продукт в качестве параметра.

Я принимаю детали продукта вход (PrdouctName, ReleaseDate) для saveProductTest и modifyProductTest метод из файла XML с использованием данных TestNG providers.Since PRODUCTID генерируется метод сохранения, я должен передать его в метод модификации ,

Каков наилучший способ передать результат одного метода тестирования другому методу в testng.

+0

Обычно для модульного тестирования, вы хотите, чтобы дразнить ничего не часть теста текущего блока. – Amber

ответ

12

При всем уважении к simendsjo факт, что все тесты должны быть независимыми друг от друга, является догматическим подходом, который имеет много исключений.

К первому вопросу: 1) использовать зависимые методы и 2) хранить промежуточный результат в поле (TestNG не воссоздает ваши экземпляры с нуля, так что поле сохранит свое значение).

Например

private int mResult; 

@Test 
public void f1() { 
    mResult = ... 
} 

@Test(dependsOnMethods = "f1") 
public void f2() { 
    // use mResult 
} 
+0

Обратите внимание, что при использовании Eclipse с плагином TestNG при выполнении вашего тестового метода f2 «только» (щелкните правой кнопкой мыши по методу> Запуск как > TestNG Test), Eclipse автоматически выполнит сначала f1, а затем f2. –

3

Каждый модульный тест должен быть независимым от других тестов, чтобы вы могли легче видеть, что не удается. У вас может быть вспомогательный метод сохранения продукта и возврата идентификатора и вызов этого из обоих тестов.

+0

Что делать, если обработка транзакций выполняется на уровне теста, тогда утверждения будут перенесены на другой метод. –

4

С ITestContext объекта. Это объект, доступный в глобальном масштабе в контексте Suite и предоставляемый через параметр в каждом @Test.

Например:

@Test 
public void test1(ITestContext context, Method method) throws Exception { 
    // ... 
    context.setAttribute(Constantes.LISTA_PEDIDOS, listPaisPedidos); 
    // ... 
} 

@Test 
public void test2(ITestContext context, Method method) throws Exception { 
    List<PaisPedido> listPaisPedido = (List<PaisPedido>) 
    context.getAttribute(Constantes.LISTA_PEDIDOS); 
    // ... 
}