Nic*_*ner 20 java junit unit-testing
我有一个测试套件类:
@RunWith(Suite.class)
@Suite.SuiteClasses({
GameMasterTest.class,
PlayerTest.class,
})
public class BananaTestSuite {
Run Code Online (Sandbox Code Playgroud)
在包含实际测试的任何类之前,我需要使用什么注释来在此类中运行函数?现在,我正在这样做,它可以工作,但它不是那么可读:
static {
try {
submitPeelAction = new Player(new GameMaster(1)).getClass().getDeclaredMethod("submitPeelAction");
} catch (SecurityException e) {
e.printStackTrace();
} catch (NoSuchMethodException e) {
e.printStackTrace();
}
submitPeelAction.setAccessible(true);
}
Run Code Online (Sandbox Code Playgroud)
我试过@BeforeClass但它没用.
小智 23
创建一个包含使用@BeforeClass注释的方法的超级测试类.扩展此类中的所有测试类,例如,
@Ignore
public class BaseTest {
@BeforeClass
public static void setUpBaseClass() {
//Do the necessary setup here
}
}
Run Code Online (Sandbox Code Playgroud)
此方法将在子类中的任何@BeforeClass注释方法之前运行:Source.确保未在任何子类中使用此方法名称以防止出现阴影.
如果您只需要运行一次(例如,如果要为所有要使用的测试创建/初始化大型资源),请在超类中设置一个标志以检查方法是否运行.
此设计还将确保如果您更改测试运行器,则无需更改任何其他内容.
使用@Before用于setUp()和@After用于tearDown方法.
编辑:经过一些测试,我发现@Before和@After不适用于Test Suite.在您的情况下,您应该使用@BeforeClass和静态方法来封装您的初始化代码.
@RunWith(Suite.class)
@SuiteClasses( { ContactTest.class })
public class AllTests {
@BeforeClass
public static void init() {
System.out.println("Before all");
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
28781 次 |
| 最近记录: |