J'avais la version suivante d'un test dans JUnit 3, et j'ai essayé de le convertir en JUnit 4, sans succès. L'idée est d'avoir un cas de test de base, qui fait le test réel d'une interface, disons Service
interface. Je veux tester la classe ServiceImpl
, en utilisant le cas de test de base.Junit 3 à JUnit 4 conversion
public abstract class ServiceBaseTest extends TestCase { protected Service service; protected abstract Service getService(); @Override public void setUp() { service = getService(); } public void testMethod(){ //test code } ... }
classe comme ServiceImplTest
:
public class ServiceImplTest extends ServiceBaseTest { @Override public void setUp() { service = new ServiceImpl(); } }
Je suis conscient que je peux supprimer l'extension TestCase
et utiliser @BeforeClass pour la méthode setup
. Mais la différence est que @BeforeClass
nécessite la méthode setup
pour être static
. C'est difficile pour moi, puisque je ne peux pas faire getService()
statique, car il serait en conflit avec abstract
mot-clé. Est-ce une façon propre de mettre en œuvre l'alternative, en utilisant JUnit 4?
@Before va s'exécuter avant chaque @Test. Je veux juste configurer le service une fois. – walters
dans JUnit3, setUp() est également appelé avant chaque test. Si vous voulez vous assurer que getService() n'est appelé qu'une seule fois, vous pouvez stocker le résultat de l'appel dans un champ statique – NamshubWriter