首页 文章

Overriden BeforeClass方法正在停止整个测试执行

提问于
浏览
0

我正在使用TestNG和Selenium WebDriver,我使用的框架有一个基类,它有BeforeClass方法,所有的Suite类都从这个基类扩展,并覆盖了如图所示的BeforeClass方法 .

public BaseClass{
    @BeforeClass
    public void preConditions{
        //primary actions like opening browser and setting preferences
    }
}

public TestSuiteClass extends BaseClass{
    @BeforeClass
    @Override
    public void preConditions(){
        super.preCnditions();
        //specific preconditions required by test suite
    }
}

我遇到的问题是,如果被覆盖的方法因任何原因失败,则会跳过所有测试套件/案例并停止整个测试执行 . 如何阻止这种情况发生?

2 回答

  • 0

    如果某些内容在@Before ...注释过程中失败,则将跳过测试而不是失败,因为问题不在于您的测试用例,而在于它们之前的过程 . 所以看起来你的车不能在断桥上过河,但这不是你车的故障 .

    如果你真的想做一些黑客攻击,你可以找到ideas here!

  • 1

    你可以找到解决这个问题的方法,但你需要考虑一下你是否真的想要这样做 . 使用 @BeforeClass 注释的方法的想法是为测试设置相关数据(您甚至称之为 preConditions ) . 如果失败,则无论如何都不会通过测试 .

    一种方法是删除 @BeforeClass 注释并从测试本身调用该方法

    public TestSuiteClass etends BaseClass {
    
        public void customPreConditions() {
            super.preCnditions();
        }
    
        @Test
        publuc void someTest() {
            customPreConditions();
            // do the test
        }
    }
    

    即使 customPreConditions() 不成功,测试仍将继续 .

相关问题