2016-12-19 60 views
0

我@Before和@After方法不受Junit的JUnit 4中沒有拿起我的@Before和@After方法

public class TestSetup { 

    @Before 
    public void browserSetUp() { 
    // code for before a test 
    } 


    @After 
    public void tearDown() { 
     // code after a test 
    } 
} 

拿起另一個類文件中我已經定義

public class Steps{ 

@Step 
public void step1() { 
//Code for step 1 

} 

@Step 
public void step2() { 
// Code for Step 2 

} 

} 

最後,我呼籲越來越執行

public class Tests { 

Steps step = new Steps(); 

@Test 
public void TC_0001 { 
step.step1(); 
step.step2(); 

} 


} 

@Test方法爲我的測試這些步驟,但@Before@After方法在@Test方法之前未執行。是否需要將TestSetup類包括在某處?任何幫助將不勝感激。

**思想1:當我使用Maven構建,我@Before@After方法駐留在一個類(TestSetup的.java - 名稱不與*Test.java結束,並可能這就是爲什麼Maven是不撿起來執行? 。

回答

1

@Before@After在您的測試運行同一類中使用你應該把這個方法在您的測試類:

public class Tests { 

    Steps step = new Steps(); 

    @Test 
    public void TC_0001 { 
     step.step1(); 
     step.step2(); 
    } 

    @Before 
    public void browserSetUp() { 
     // code for before a test 
    } 


    @After 
    public void tearDown() { 
     // code after a test 
    } 

} 
+0

而不是把所有的東西放在同一個類中(@Test,@Before&@After)',有沒有什麼辦法可以在另一個類中定義,比如'TestSetup'?那麼從'Tests'類中的'TestSetup'繼承? – avirup

0

@Before@After之前單隻執行測試,如果它們與@Test在相同的類中定義。在你的情況下,TestSetup類不包含測試。所以要麼Test繼承自TestSetup,要麼你創建了一個rule,它在你的測試中「執行」。

+0

因此,如果我通過繼承TestSetup的方法來繼承'public class Test s extends TestSetup {@Test public void TC_0001 {// code}}'它仍然沒有選擇 – avirup