À mon avis, cela ne doit pas être si difficile. Alors essayons :
0. Importations
Vous devez importer trois annotations :
import org.junit.After;
import org.junit.Before;
import org.junit.Test;`
Après avoir fait les quelques changements suivants, vous n'aurez plus besoin import junit.framework.TestCase;
.
1. Annotez test*
Méthodes
Toutes les méthodes commençant par public void test
doit être précédé de la mention @Test
annotation. Cette tâche est facile avec une regex.
2. Annoter les méthodes SetUp et TearDown
Eclipse génère ce qui suit setUp()
méthode :
@Override
protected void setUp() throws Exception { }
Doit être remplacé par :
@Before
public void setUp() throws Exception { }
Idem pour tearDown()
:
@Override
protected void tearDown() throws Exception { }
remplacé par
@After
public void tearDown() throws Exception { }
3. Se débarrasser de extends TestCase
Supprimer exactement une occurence par fichier de la chaîne de caractères
" extends TestCase"
4. Supprimer les méthodes principales ?
Il est probablement nécessaire de supprimer/refaire les méthodes principales existantes qui exécuteront le test.
5. Convertir suite()
pour @RunWithClass
Selon le commentaire de saua, il doit y avoir une conversion de la suite()
méthode. Merci, saua !
@RunWith(Suite.class)
@Suite.SuiteClasses({
TestDog.class
TestCat.class
TestAardvark.class
})
Conclusion
Je pense que cela se fait très facilement via un jeu d'expressions régulières, même si cela va me tuer le cerveau ;)
1 votes
Je ne réponds pas à la question, mais vous réalisez que vous pouvez exécuter des tests JUnit3 sous JUnit4 sans modification, oui ?
2 votes
A moins que vous n'utilisiez Junit3
TestSuite
dans ce cas, vous êtes fichu.6 votes
Si vous conservez ces tests JUnit 3, les autres développeurs (selon la taille de votre équipe) continueront à les copier dans de nouveaux tests. Et s'ils ont besoin de désactiver temporairement un test (oui, ils ne devraient pas, mais parfois ils en auront besoin), ils continueront à le renommer de testX en FIMXEtestX au lieu de l'annoter avec @Ignore. Vous n'aurez donc aucune idée du nombre de tests qui sont actuellement ignorés (et donc de l'inquiétude que vous devriez avoir). Prenez n'importe quel gros projet et cherchez la regex "public void \w +test"