2013-01-03 3 views
4

J'ai une suite qui référence plusieurs classes de test. Au total, il y a 15 354 cas de test. Quand je cours la suite, je suis en panne d'erreur de mémoire à la 11000ème (plus ou moins).Mémoire insuffisante (tas java) lors de l'exécution d'une suite comportant trop de cas de test

Je l'exécute sur Win 7 64 bits avec 4G RAM. J'ai également atteint un maximum de java dans la configuration d'eclipse à 1536M.

Cela fonctionne bien si j'exécute les classes de test individuellement. Y a-t-il une technique ou une directive que je peux suivre pour réduire mon empreinte mémoire? J'ai déjà refactorisé le code pour utiliser une super classe sur mes cas de test et utiliser des variables de classe pour réduire la consommation de mémoire, mais maintenant il ne le coupera plus.

+2

Les ressources sont-elles libérées après chaque test élémentaire? –

+0

Trouvé ceci: http://stackoverflow.com/questions/1771104/junit-java-lang-outofmemoryerror-when-running-all-tests-in-a-package J'ai essayé la suggestion pour annuler l'instance d'objet étant testé sur tearDown(), je ne peux pas croire que ça a marché pour moi. S'il vous plaît pardonnez-moi de demander trop tôt. Merci pour toutes les suggestions utiles. –

Répondre

0

Comme ar que je sais qu'il ya une différence entre JUnit et TestNG:

  • JUnit est initialise tous les tests avant de lancer le premier
  • testng initialise le test, il sera effectivement commencer

Mais je ne trouve pas le diagramme, qui montre le temps de fonctionnement du même test écrit en testng comparé à junit.

+0

Je suis d'accord avec vous, j'ai fait un System.out.println dans le constructeur avant dans junit. Je n'ai pas d'expérience avec TestNG. –

+0

Moi non plus, MAIS il DEVRAIT être presque identique. –

0

Vous disposez de plusieurs techniques pour ajuster le tas mémoire. L'option la plus simple consiste à utiliser -Xms. Vous pouvez voir reducing java memory.

Questions connexes