Mus*_*eas 5 java testng selenium maven
如果一个TestCase(Class)失败,为什么TestNG会继续执行测试?
例如,testoutput是:
1 test passed, 1 test failed.(3599,0 s)
TestSuite FAILED
run FAILED: check5=3 Expected: <3> got: <5>
run passed (1.0s) // <--- this should not have been executed
Run Code Online (Sandbox Code Playgroud)
为什么第二次运行甚至被执行?我的testngsuite.xml:
<suite name="TestSuite_03">
<test name="TestCase_17">
<groups>
<run><include name="functest"/></run>
</groups>
<classes>
<class name="TestStep_003" desc="will fail" />
<class name="TestStep_012" desc="will pass" />
</classes> ...
Run Code Online (Sandbox Code Playgroud)
我通过NetBeans使用Maven,TestNG和Java
我的结构:
public abstract class TestCommon
{
@BeforeSuite(groups={"functest})
public void BeforeSuite()
{
// clean report folder
}
@BeforeTest(groups={"functest})
public void BeforeTest()
{
// start selenium browser
}
@AfterMethod(groups={"functest})
public void AfterMethod()
{
// check for failure and capture screenshot
}
@AfterTest(groups={"functest})
public void AfterTest()
{
// close browser
}
}
public class TestStep_003 extends TestCommon
{
@Test(groups = {functest})
public void run()
{
assertThat(5, Matchers.equalTo(3)); // will fail
}
}
public class TestStep_012 extends TestCommon
{
@Test(groups = {functest})
public void run()
{
assertThat(5, Matchers.equalTo(5)); // will pass
}
}
Run Code Online (Sandbox Code Playgroud)
您应该将测试用例设计为独立的,因为模块化会降低复杂性:如果测试是依赖的,如果最后一个测试用例失败,则总是需要运行所有测试用例,并且需要检查所有测试用例是否可能导致错误/失败.
通过独立测试,您可以运行所有这些测试,例如在夜间构建期间,即使其中一些测试失败.或者单独执行特定的一个.而且您无需担心测试的顺序.这就是为什么几乎所有测试跑步者都执行所有测试并且不保证他们的订单.
这尤其适用于单元测试.对于一些集成测试和验收测试,可能会接受一些依赖性.在这种情况下,请使用TestNG的依赖项功能.
| 归档时间: |
|
| 查看次数: |
7556 次 |
| 最近记录: |