我有一个测试套件类:

@RunWith(Suite.class)
@Suite.SuiteClasses({
    GameMasterTest.class,
    PlayerTest.class,
})
public class BananaTestSuite {

在包含实际测试的任何类之前,我需要使用什么注释来使该类中的函数运行?现在,我正在这样做,并且它可以工作,但是它不像它那样可读:
static {
    try {
        submitPeelAction = new Player(new GameMaster(1)).getClass().getDeclaredMethod("submitPeelAction");
    } catch (SecurityException e) {
        e.printStackTrace();
    } catch (NoSuchMethodException e) {
        e.printStackTrace();
    }
    submitPeelAction.setAccessible(true);
}

我尝试了@BeforeClass,但没有成功。

最佳答案

制作一个 super 测试类,其中包含用@BeforeClass注释的方法。从该类扩展所有测试类,例如,

@Ignore
public class BaseTest {
    @BeforeClass
    public static void setUpBaseClass() {
        //Do the necessary setup here
    }
}

此方法将在子类Source中任何带@BeforeClass注释的方法之前运行。
确保此方法名称未在任何子类中使用,以防止产生阴影。

如果您只需要运行一次(例如,如果要创建/初始化要使用的所有测试的大型资源),请在父类(super class)中设置一个标志,以检查该方法是否运行。

这种设计还可以确保如果您更改测试运行程序,则无需更改其他任何内容。

10-08 16:14