tearDown must be annotated with an annotation such as null
89 return player;
90 }
91
92 public final void tearDown() { 93 plugin.onDisable(); 94 deleteDir(new File(filePath + "TestServer")); 95 } 96
97 private boolean deleteDir(final File file) {
98 if (file.isDirectory()) {
setup must be annotated with an annotation such as null
32 private Player attacker;
33 private Player defender;
34
35 public final void setup() throws Exception { 36 filePath = URLDecoder.decode(PluginSetup.class.getClassLoader().getResource("").getPath(), "UTF-8"); 37 final String decoded = filePath + "TestServer/plugins/PvPManager"; 38 final File pluginDirectory = new File(decoded); 39 pluginDirectory.mkdirs(); 40 server = mock(Server.class, Mockito.RETURNS_MOCKS); 41 Mockito.when(server.getPluginManager()).thenReturn(mock(PluginManager.class)); 42 Mockito.when(server.getUpdateFolderFile()).thenReturn(new File(filePath + "TestServer/plugins/update")); 43 System.setProperty("java.util.logging.SimpleFormatter.format", "[%1$tT] [%4$-7s] %5$s %n"); 44 Mockito.when(server.getLogger()).thenReturn(Logger.getLogger("Minecraft")); 45 final World world = mock(World.class); 46 Mockito.when(world.getName()).thenReturn(""); 47 Mockito.when(server.getWorlds()).thenReturn(Arrays.asList(world)); 48 Bukkit.setServer(server); 49 plugin = Mockito.mock(PvPManager.class, Mockito.CALLS_REAL_METHODS); 50 @SuppressWarnings({ "resource", "null" }) 51 final PluginDescriptionFile pdf = new PluginDescriptionFile(PluginSetup.class.getClassLoader().getResource("plugin.yml").openStream()); 52 final Method method = JavaPlugin.class.getDeclaredMethod("init", PluginLoader.class, Server.class, PluginDescriptionFile.class, File.class, File.class, 53 ClassLoader.class); 54 method.setAccessible(true); 55 method.invoke(plugin, (Object) null, server, pdf, pluginDirectory, new File(filePath), PluginSetup.class.getClassLoader()); 56 Mockito.doReturn(mock(PluginCommand.class)).when(plugin).getCommand(ArgumentMatchers.anyString()); 57 plugin.onLoad(); 58 plugin.onEnable(); 59 setupPlayers(); 60 } 61
62 public final void setupPlayers() {
63 attacker = mock(Player.class, Mockito.RETURNS_MOCKS);
Description
JUnit 3 introduced the setUp
and tearDown
methods as part of the TestCase
API. These methods allow tests to perform operations before and after a test has run.
However, they cannot be directly used in JUnit 4 and 5; they must be marked with specific annotations to preserve their functionality.
When migrating from JUnit3 to JUnit4, the @Before
and @After
annotations, or the @BeforeClass
and @AfterClass
annotations must be used.
When migrating to JUnit5, the @BeforeEach
and @AfterEach
annotations, or the @BeforeAll
and @AfterAll
annotations must be used.
Bad Practice
public void setUp() { // Needs an annotation now...
// ...
}
// Needs to be annotated.
public void tearDown() {
// ...
}
Recommended
For JUnit4:
@Before
public void setUp() {
// ...
}
@After
public void tearDown() {
// ...
}
For JUnit5:
@BeforeEach
public void setUp() {
// ...
}
References
- JUnit4 - Annotations
- JUnit5 - Annotations