Écrire des Tests pour un Bloc
Introduction
Ce guide vous montrera comment écrire des tests pour un bloc en utilisant GameTest sur le repo Astreval Jobs. Vous apprendrez à créer des tests simples, à utiliser des structures pour les tests, et à exploiter les méthodes d'aide fournies par TestHelper.java.
Prérequis
Avant de commencer, assurez-vous d'avoir les éléments suivants :
- Une installation de Minecraft 1.20.1 avec Fabric Loader.
- Le mod Astreval Jobs installé.
- Une bonne compréhension de base de Java et de l'API Minecraft.
Ajouter un Test Simple
Pour ajouter un test simple, suivez ces étapes :
-
Créer une nouvelle classe de test :
- Créez un nouveau fichier Java dans le package
fr.astreval.test.block(ou un autre package approprié). - Nommez le fichier en fonction de ce que vous testez, par exemple
MyBlockTest.java.
- Créez un nouveau fichier Java dans le package
-
Implémenter l'interface
FabricGameTest:- Implémentez l'interface
FabricGameTestdans votre classe de test. - Ajoutez des méthodes de test annotées avec
@GameTest.
- Implémentez l'interface
Voici un exemple de test simple pour un bloc :
package fr.astreval.test.block;
import fr.astreval.block.ModBlocks;
import net.fabricmc.fabric.api.gametest.v1.FabricGameTest;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.item.ItemStack;
import net.minecraft.item.Items;
import net.minecraft.test.GameTest;
import net.minecraft.test.TestContext;
import net.minecraft.util.Hand;
import net.minecraft.util.math.BlockPos;
public class MyBlockTest implements FabricGameTest {
@GameTest(templateName = FabricGameTest.EMPTY_STRUCTURE)
public void useBoneMeal(TestContext context) {
BlockPos pos = new BlockPos(1, 1, 1);
context.setBlockState(pos, ModBlocks.MY_BLOCK.getDefaultState());
PlayerEntity player = context.createMockSurvivalPlayer();
ItemStack boneMealStack = new ItemStack(Items.BONE_MEAL);
player.setStackInHand(Hand.MAIN_HAND, boneMealStack);
context.useBlock(pos, player);
context.expectBlockProperty(pos, ModBlocks.MY_BLOCK.getAgeProperty(), 1);
context.complete();
}
}
Utiliser TestHelper.java
TestHelper.java propose plusieurs méthodes pour simplifier l'écriture des tests. Ces méthodes incluent des fonctions pour simuler l'utilisation d'items par un joueur et pour vérifier que le nombre d'items dropés est dans une plage spécifique.
Méthodes Disponibles
abstractPlayerUseItemOnBlock(TestContext context, BlockPos pos, Item stack): Simule l'utilisation d'un item par un joueur sur un bloc.abstractPlayerUseEmptyItemOnBlock(TestContext context, BlockPos pos): Simule l'utilisation d'un item vide par un joueur sur un bloc.expectItemsInRange(TestContext context, Item item, BlockPos pos, double radius, int minAmount, int maxAmount): Vérifie que le nombre d'items dropés est dans une plage spécifique.
Exemple d'Utilisation
Voici un exemple de test utilisant TestHelper :
// ... existing code ...
import fr.astreval.test.utils.TestHelper;
public class MyBlockTest implements FabricGameTest {
@GameTest(templateName = FabricGameTest.EMPTY_STRUCTURE)
public void useScythe(TestContext context) {
BlockPos pos = new BlockPos(1, 1, 1);
context.setBlockState(pos, ModBlocks.MY_BLOCK.getDefaultState());
TestHelper.abstractPlayerUseItemOnBlock(context, pos, ModItems.IRON_SCYTHE);
TestHelper.expectItemsInRange(context, ModBlocks.MY_BLOCK.asItem(), pos, 1.0, 2, 3);
context.complete();
}
}
Ajouter le Fichier de Test dans fabric.mod.json
Pour que vos tests soient exécutés, vous devez ajouter le fichier de test dans le fichier fabric.mod.json.
Ajouter le Fichier de Test
Localiser le Fichier :
Le fichier se trouve dans src/main/resources/fabric.mod.json.
Ajouter le Chemin du Fichier de Test :
Ajoutez le chemin de votre fichier de test dans la section entrypoints sous fabric-gametest. Exemple :
{
...
"entrypoints": {
...
"fabric-gametest": [
"fr.astreval.test.ModTests",
"fr.astreval.test.block.SquaringStationBlockTest",
"fr.astreval.test.block.BushBlockTest",
"fr.astreval.test.block.MushroomPlantBlockTest",
"fr.astreval.test.item.FertilizerBagTest",
"fr.astreval.test.item.SeedsTest",
"fr.astreval.test.block.MyBlockTest" // Ajoutez votre fichier de test ici
]
},
...
}
Conclusion
Vous avez maintenant les bases pour écrire des tests pour un bloc en utilisant GameTest sur le repo Astreval Jobs. Utilisez les structures pour définir des environnements de test, exploitez les méthodes d'aide de TestHelper.java, et n'oubliez pas d'ajouter vos fichiers de test dans fabric.mod.json.