2011-10-07 14 views
21

Atrybut dependsOnMethods z adnotacją @Test działa poprawnie, gdy test, od którego należy polegać, jest w tej samej klasie, co test, który ma tę adnotację. Ale nie działa, jeśli testowana metoda i zależna od niej metoda są w różnych klasach. Przykład jest następujący:TestNG dependsOnMetods z innej klasy

class c1 { 
    @Test 
    public void verifyConfig() { 
    //verify some test config parameters 
    } 
} 

class c2 { 
    @Test(dependsOnMethods={"c1.verifyConfig"}) 
    public void dotest() { 
    //Actual test 
    } 
} 

Czy istnieje sposób na obejście tego ograniczenia? Jednym prostym wyjściem jest stworzenie testu w class c2, który wywołuje c1.verifyConfig(). Ale to byłoby zbyt dużo powtórzeń.

Odpowiedz

25

Wpisz metodę w postaci group i użyj dependsOnGroups.

class c1 { 
    @Test(groups={"c1.verifyConfig"}) 
    public void verifyConfig() { 
    //verify some test config parameters 
    } 
} 

class c2 { 
    @Test(dependsOnGroups={"c1.verifyConfig"}) 
    public void dotest() { 
    //Actual test 
    } 
} 

Zaleca się, aby sprawdzić konfigurację w @Before * i rzucać, jeśli coś pójdzie nie tak nie tak testy nie będą działać. W ten sposób testy mogą skupić się tylko na testowaniu.

class c2 { 
    @BeforeClass 
    public static void verifyConfig() { 
    //verify some test config parameters 
    //Usually just throw exceptions 
    //Assert statements will work 
    } 

    @Test 
    public void dotest() { 
    //Actual test 
    } 
} 
+3

ta działa poprawnie, gdy uruchomiony jednostkę pliku klasy podczas uruchamiania go za pośrednictwem pliku testing.xml coraz błąd DependencyMap :: Metoda „LoanApprovalTest.testLoanApprova (java.util.Hashtable) [pri: 0, przykład: com .zions.release1.Sanity.LoanTestCases.LoanApprovalTest @ 3884b2] "zależy od nieistniejącej grupy" CreateLoanAccountTest.testCreateLoanAccount " –