Automated Testing of PaperMC

AkiTendo

New member
Mar 6, 2022
3
0
1
My day job is automated tests for clients using Behavior Driven Development. While my current employer is using a JavaScript setup, I have extensive experience in the Java implementation of the Cucumber framework for testing.

I'm curious about the current state of PaperMC's automated testing - which frameworks are in use, and also what support is extended to the plug in community to help them build tests for their plugins.

Testing video games is notoriously difficult, but I've noted many of the plugins interact solely with the console, and reads and writes to a console interface can be tested reasonably easily and quickly. Test frameworks can also monitor artifacts of the test process, checking the files the plugin creates or modifies to see if those are correctly applied, and checking the integrity of any database in use by the plugin. A test system should also be able to quickly stand up and tear down databases for specific tests.

Given my professional work this is the area I would be best positioned to help out on a volunteer basis, but I need to know the current situation more fully. For all I know at this point all these bases have been covered and my help really isn't needed, but it is something I'm curious about all the same.
 

MiniDigger

Drunk German 🍺
Staff member
Dec 14, 2021
20
13
3
25
Cologne, Germany
benndorf.dev
Paper has a junit test suite, some of the tests are more like integration tests, but ye. We want to extend on those eventually, but nobody focused on that yet. We also thought about a big integration test suite but nobody really looked into that yet.

Plugins can easily write unit tests too using whatever frameworks they want, no need for us to do anything. There are libs like MockBukkit that are supposed to make it easier, but I prefer to mock stuff myself generally, keeps the scope smaller and forces me to properly architect my stuff.

For integration tests Mojang has the game test framework which they exposed to us after I asked, I created this plugin demonstrating how one could utilize it to write integration tests: https://github.com/MiniDigger/MiniTestFramework

But ye, plugins are just normal java software, so any existing tooling can be easily adapted, most plugin devs just didn't learn that automated testing should be part of the development process so nobody really does it.