2010-04-10 57 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

好主意。也許你可以編寫一個方面,截取像這樣註釋的方法,查找用戶名和密碼,並將它們設置爲類中的ThreadLocal成員(如果要在多線程環境中使用它,則使用ThreadLocal)。測試方法獲取成員的用戶名和密碼。

+0

沒錯。主要問題是,從一個環境轉移到另一個環境時,環境A中使用的測試數據在環境B中不可用。此外,每個環境中的數據都是瞬態的;它可能在幾個月後被清除。所以我基本上想要做的就是讓測試描述它所需要的數據類型,並讓其他組件找到要匹配和提供的數據。例如,我需要一個帳戶登錄到網站,以品牌合作伙伴abc。我只描述我需要的內容,而不是硬編碼數據。我認爲aop很好地解決了這個問題 – ace 2010-04-11 18:58:40

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」測試或根據在測試服務器上的「ActiveDirectory的」測試。我使用組功能將「單元」測試與「功能」測試分開,例如,後者需要完全配置的環境,而前者則不需要。我還在只能在開發者機器上運行的「手動」組中進行了一些測試。