2010-04-10 3 views
1

먼저 내가 사용자 지정 주석을이 용도로 사용할 수 있다고 생각하지만 실제로는 확실하지 않다고 말하는 것으로 시작하겠습니다.테스트를 구성하기위한 사용자 정의 주석

몇 가지 테스트 클래스를 꾸밀 수있는 주석 세트를 갖고 싶습니다. 주석을 통해 다른 환경에 맞게 테스트를 구성 할 수 있습니다. 예 :

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 방법에 사용되는 사용자 이름과 암호를 조회하는 데 사용될 것이라고 할 것이다.

내 질문에 주석이 가능합니까? 그렇다면 나는 이런 식으로 온라인으로 품위있는 하우투 온라인을 찾을 수 없었다. 여기에있는 모든 것들이 사용자 정의 주석과 기본 프로세서를 수행하는 방법에 대한 기본적인 내용 인 것 같습니다. 그러나 이와 같은 상황에서는 아무 것도 발견하지 못했습니다. 아이디어?

답변

0

좋은 아이디어. 어쩌면 당신은 aspect를 작성할 수 있습니다. 주석을 달아 메소드를 가로 채고, 사용자 이름과 패스워드를 찾고 클래스의 ThreadLocal 멤버 (ThreadLocal을 멀티 스레드 환경에서 사용하려는 경우)로 설정합니다. 테스트 메소드는 멤버로부터 사용자 이름과 패스워드를 얻는다.

+0

정확히. 중요한 문제는 한 환경에서 다른 환경으로 이동할 때 환경 A에서 사용 된 테스트 데이터가 환경 B에서 사용 가능하지 않다는 것입니다. 또한 각 환경 내의 데이터는 일시적입니다. 그것은 2 개월 후에 제거 될 수 있습니다. 그래서 본질적으로하고 싶은 것은 테스트에서 필요한 데이터 유형을 설명하고 일부 다른 구성 요소가 일치하고 일치하는 데이터를 찾을 수 있도록하는 것입니다. 예를 들어 파트너 ABC에 브랜딩을 사용하여 웹 사이트에 로그인 한 계정이 필요합니다. 나는 단지 내가 필요로하는 것이고 하드 코딩 데이터는 기술하지 않고있다. 나는 Aop이 이것을 멋지게 처리한다고 생각한다. – ace

0

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"테스트 또는 테스트 서버에 따라 "액티브 디렉토리"테스트를 실행할지 여부를 선택할 수 있습니다. 그룹 기능을 사용하여 "단위"테스트를 "기능적"테스트에서 분리합니다. 예를 들어, 후자는 완전히 구성된 환경이 필요하고 전자는 그렇지 않습니다. 또한 개발자 머신에서만 실행되는 "수동"그룹에 몇 가지 테스트를 실시했습니다.

관련 문제