Procédure de test d’un plugins ou d’un mods

Note

Les changements faits par votre PR déterminent si vous devez fournir un plugin ou mod de test. Toutes les modifications opérées sur l’API nécessitent un plugin de test, et tous les changements d’implémentation un mod de test. Dans la suite de cet article, plugin de test fera référence indifféremment à un plugin ou mod de test.

La phase de test fait partie intégrante du processus de développement d’un projet. Fournir un plugin de test accomplit deux objectifs :

  1. Test

    Un plugin de test démontre que vous avez testé vos modifications, et fournit également aux autres la possibilité de vérifier les changements actuels ainsi que les changements futurs.

  2. Documentation

    Un plugin de test bien commenté fournit des détails qui ne sont pas requis dans la documentation de la PR. De plus, les commentaires dans une PR ne restent généralement que jusqu’au moment où la PR est fusionnée. Tandis que les commentaires dans un programme restent accessibles tant que le code demeure. Ils ne doivent pas fournir toute la documentation. Un code bien commenté doit plutôt supporter et compléter la documentation.

Astuce

Une bonne compréhension de Création d’un Plugin fournit une fondation solide pour l’écrire de plugins de test. Les exigences de plugins s’appliquent aux plugins de test, telles que Identifiants de Plugins et Journalisation (Logging) et Débogage.

Vous devez fournir un plugin de test lorsque vous contribuez à des fonctionnalités de l’API ou de l’implémentation, qui sont nouvelles ou modifiées. Le plugin est simplement une classe ajoutée au package org.spongepowered.test, qui se trouve dans le dossier SpongeCommon/testplugins/src/main/java/org/spongepowered/test/. La PR pour les contributions doit inclure le plugin de test.

Il est essentiel que les plugins de test ne changent pas le jeu lorsque ce n’est pas prévu. Par conséquent, une commande doit permettre d’activer ou de désactiver la fonctionnalité du plugin. Assurez-vous de ne pas confondre cela avec l’exclusion des plugins de test dans le processus de build. Un paramètre dans SpongeCommon/gradle/implementation.gradle permet d’exclure les plugins de test du fichier jar final. Cependant, une commande doit activer ou désactiver la fonctionnalité du plugin de test, que les plugins de test soient inclus dans un fichier jar ou non.

Note

L’annotation @Plugin permet d’automatiquement enregistrer votre plugin avec Sponge mais sans permettre de l’activer/désactiver.

Le code suivant montre comment enregistrer votre plugin tout en permettant de l’activer/désactiver :

private boolean registered = false;

@Listener
public void onInit(GameInitializationEvent event) {
    Sponge.getCommandManager().register(this,
        CommandSpec.builder().executor((source, context) -> {
            if (this.registered) {
                this.registered = false;
                Sponge.getEventManager().unregisterListeners(this.listener);
            } else {
                this.registered = true;
                Sponge.getEventManager().registerListeners(this, this.listener);
            }
            return CommandResult.success();
        }).build(), "flowerPotTest");
}

Note

JUnit est utilisé à des fins limitées et principalement en interne. De manière générale, JUnit s’avère utile pour tester sans joueur. Toutefois, le mieux est de ne pas utiliser JUnit sans avoir reçu l’accord d’un membre de l’équipe de Sponge.