我想你应该稍微改变自己的战术。而不是感知这些〜(dbResetTest等)作为测试类,您应该让它们测试方法,并以编程方式(而非XML)而不是dependsOnGroups使用dependsOnMethods。然后,您将能够轻松实现所需的逻辑(每个测试都是唯一的 - > @Test注释,每个测试都以特定优先级执行 - >使用优先级参数)。然后1,2,3测试应该是你的测试类。因此,这里是你怎么做:如果
public class LoginFeature {
@Test (priority=1)
public openURLTest(){
}
@Test (priority=2, dependsOnMethods="openURLTest")
public dbResetTest(){
}
@Test (priority=3, dependsOnMethods="dbResetTest")
public clearCacheTest(){
}
@Test (priority=4, dependsOnMethods="clearCacheTest")
public loginTest(){
}
}
这样的东西你的测试失败之间在会自动跳过的情景休息,你会不会需要直接调用clearCacheTest。
希望这会有所帮助!
更新
OP的评论
好后,我再次觉得你还挺有一个设计问题。为了让你的方法被多次调用,他们需要坐在他们可以访问的地方。你几乎在那里与你的方法,但不完全。所以这里是你如何调用方法。多次,都从头运行它们(我会先告诉你的代码,然后详细解释):
父类
public class TestBase{
//include here all your important methods *without* @Test Annotation
public void dbReset(){
//perform db reset
}
public void clearCache(){
//clear browser cache
}
public boolean openURL(){
//try to open test URL
return didIreachTestURLSuccessfully;
}
}
子类
public class loginFeature extends TestBase{
@Test (priority=1)
public void attemptToResetDataBase(){
dbReset();
}
@Test (priority=2, dependsOnMeth0ds="attemptToResetDataBase")
public void clearCacheTest(){
clearCache();
}
@Test (priority=3, dependsOnMeth0ds="clearCacheTest")
public void verifySuccessfulLogin(){
login();
}
}
因此,您将所有测试方法都包含在名为TestBase的父类中。然后你用一个扩展了TestBase的类创建你的测试(例如loginTest)。现在你可以多次调用你的方法,每次将它们作为一个单独的测试对待,并根据你的需要将它们与依赖关联起来(也就是说,我根据先前的方法将它们中的每一个连接起来;但是你可以重新排列它们并将它们全部放到取决于一个,还是没有人)。
因为您的测试类从TestBase继承,您甚至不需要创建一个对象来访问内部方法;你可以直接打电话给他们。
希望这可以为你解决,如果你需要更多的信息,请不要犹豫,写评论。
不幸的是,这不是我想要实现的。我提到的这些测试已经构建为@Test方法。我希望从其他测试和其他类中多次调用这些方法。现在,当一些测试依赖于clearCacheTest时,它会被调用一次,如果另一个测试也依赖于clearCacheTest,它将不会再被调用,因为它已经通过了...但我不仅希望它通过,而且实际上做了在这两个测试之前清除缓存两次。 –
好的乔恩得到你,将更新我的答案,以反映你的更新。我仍然认为它是可以实现的,但:) :) –
几乎在那里;)我已经试过这种方法在一开始,它甚至工作,但很快我意识到,它给了我虚假的测试报告。你看,dbReset这种方式没有被定义为一个测试,所以当我运行我的测试编号1即loginFeatureTest:(openURLTest-> dbResetTest-> clearCacheTest-> loginTest)和dbReset失败,出于某种原因,我会得到报告,就好像整个loginFeatureTest失败,我希望看到它实际上是dbResetTest错误。也许唯一的选择是从loginFeatureTest中调用dbReset并用消息声明它的结果? –