Junit 4没有拿起我的@Before& @After方法

时间:2016-12-19 15:29:59

标签: java junit allure

我的@Before和@After方法没有被Junit接收

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 - 名称不以{{1}结尾这可能就是为什么Maven没有把它拿起来执行?

2 个答案:

答案 0 :(得分: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
    }

}

答案 1 :(得分:0)

@Before@After仅在单个测试之前执行,如果它们与@Test在同一个类中定义。在您的情况下,TestSetup类不包含任何测试。因此,要么让Test继承TestSetup,要么创建一个rule来执行"围绕"你的考试。