2010-06-25 1 views
7

한 시험 방법의 출력을 전달 :내가 TestNG의에서 다음과 같은 단위 테스트 케이스를 작성해야 할 또 다른 방법 TestNG를

  1. 제품 정보는 DB에 성공적으로 저장하는 경우 productId에를 반환하는 saveProductTest.

  2. modifyProductTest의 경우 이전에 저장된 productId를 매개 변수로 사용해야합니다.

내가 저장 방법에서 생성되는 TestNG의 데이터 providers.Since productId에를 사용하여 XML 파일에서 saveProductTest 및 modifyProductTest 방법에 대한 제품 정보 입력 (PrdouctName, RELEASEDATE)을 복용하고, 나는 수정 방법에 전달해야 .

하나의 테스트 메소드 출력을 testng의 다른 메소드로 전달하는 가장 좋은 방법은 무엇입니까?

+0

일반적으로 단위 테스트를 위해, 현재 단위 테스트의 일부 아무것도 조롱하고 싶다. – Amber

답변

12

simendsjo에 대한 모든면에서, 모든 테스트가 서로 독립적이어야한다는 사실은 예외가 많은 독단적 인 접근 방식입니다.

원래의 질문으로 돌아 가기 : 1) 의존적 인 방법을 사용하고 2) 중간 결과를 필드에 저장합니다 (TestNG는 처음부터 인스턴스를 다시 생성하지 않으므로 해당 필드에 해당 값이 유지됩니다). 일례 ITestContext 개체

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

각 단위 테스트는 다른 테스트와 독립적이어야하므로 더 쉽게 실패한 것을 볼 수 있습니다. 제품을 저장하고 ID를 반환하는 헬퍼 메소드를 가질 수 있으며 두 테스트에서이를 호출 할 수 있습니다.

+0

테스트 레벨에서 트랜잭션 처리가 완료되면 어설 션을 다른 메소드로 이동해야합니다 –

4

들어

. 그것은 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); 
    // ... 
} 
관련 문제