Events
Asserting that Events were fired
Mockbukkit also provides a way to check if Events are fired. Events are Classes that extend org.bukkit.event.Event
and are fired by Bukkit.
To check if an event is fired, you can use the PluginManagerMock#assertEventFired(Class<? extends Event>)
method. This method takes a class that extends org.bukkit.event.Event.
It will then check if an event of that type was fired.
1public class MyPluginTests {
2 private ServerMock server;
3
4 @BeforeEach
5 public void setUp() {
6 server = MockBukkit.mock();
7 }
8
9 @AfterEach
10 public void tearDown() {
11 MockBukkit.unmock();
12 }
13
14 @Test
15 public void testEvent() {
16 Player player = server.addPlayer();
17 player.setGameMode(GameMode.CREATIVE);
18
19 server.getPluginManager().assertEventFired(PlayerGameModeChangeEvent.class);
20 }
21}
If you want to check if an event was fired with a specific value, you can use the
PluginManagerMock#assertEventFired(Class<? extends Event>, Predicate<Event>) method.
1public class MyPluginTests {
2 private ServerMock server;
3
4 @BeforeEach
5 public void setUp() {
6 server = MockBukkit.mock();
7 }
8
9 @AfterEach
10 public void tearDown() {
11 MockBukkit.unmock();
12 }
13
14 @Test
15 public void testEvent() {
16 Player player = server.addPlayer();
17 player.setGameMode(GameMode.CREATIVE);
18
19 server.getPluginManager().assertEventFired(PlayerGameModeChangeEvent.class, event -> {
20 event.getNewGameMode() == GameMode.CREATIVE);
21 });
22 }
23}
You can also set a custom failure message for the assertion by using the
PluginManagerMock#assertEventFired(Class<? extends Event>, String) method.
1public class MyPluginTests {
2 private ServerMock server;
3
4 @BeforeEach
5 public void setUp() {
6 server = MockBukkit.mock();
7 }
8
9 @AfterEach
10 public void tearDown() {
11 MockBukkit.unmock();
12 }
13
14 @Test
15 public void testEvent() {
16 Player player = server.addPlayer();
17 player.setGameMode(GameMode.CREATIVE);
18
19 server.getPluginManager().assertEventFired(PlayerGameModeChangeEvent.class, "The event was not fired!");
20 }
21}
Asserting that Events were not fired
You can also check if an event was not fired by using the
PluginManagerMock#assertEventNotFired(Class<? extends Event>) method.
1public class MyPluginTests {
2 private ServerMock server;
3
4 @BeforeEach
5 public void setUp() {
6 server = MockBukkit.mock();
7 }
8
9 @AfterEach
10 public void tearDown() {
11 MockBukkit.unmock();
12 }
13
14 @Test
15 public void testEvent() {
16 Player player = server.addPlayer();
17 player.setGameMode(GameMode.CREATIVE);
18
19 server.getPluginManager().assertEventNotFired(PlayerMoveEvent.class);
20 }
21}
You can also set a custom failure message for the assertion by using the
PluginManagerMock#assertEventNotFired(Class<? extends Event>, String) method.
1public class MyPluginTests {
2 private ServerMock server;
3
4 @BeforeEach
5 public void setUp() {
6 server = MockBukkit.mock();
7 }
8
9 @AfterEach
10 public void tearDown() {
11 MockBukkit.unmock();
12 }
13
14 @Test
15 public void testEvent() {
16 Player player = server.addPlayer();
17 player.setGameMode(GameMode.CREATIVE);
18
19 server.getPluginManager().assertEventNotFired(PlayerMoveEvent.class, "The event was fired!");
20 }
21}