JUnit 4 PermGen taille de débordement lors de l'exécution des tests dans Eclipse et Maven2

Je suis en train de faire quelques tests unitaires avec JUnit, PowerMock et Mockito. J'ai beaucoup de test de classes annotées avec @RunWith(PowerMockRunner.class) et @PrepareForTest(SomeClassesNames) pour se moquer de finale classes et plus de 200 cas de test.

Récemment, j'ai couru dans un problème de PermGen space débordement quand je lance mon test complet de la suite dans Eclipse ou Maven2. Quand je lance mon test un par un, puis chacun d'eux réussit.

J'ai fait quelques recherches à ce sujet, cependant, aucun de ces conseils m'ont aidé (j'ai augmenté PermGenSize et MaxPermSize). Récemment, j'ai découvert qu'il y est une classe qui ne contient que des méthodes statiques et chaque méthode renvoie un objet est moqué avec PowerMockito. Je me demande si c'est une bonne pratique, et c'est peut-être l'origine du problème, car les variables statiques sont partagés entre les tests unitaires?

D'une manière générale est-ce une bonne pratique d'avoir une classe statique avec beaucoup de méthodes statiques qui renvoie statique est moqué d'objets?

Est-il une raison pourquoi votre demande a été conçu avec autant de méthodes statiques? Méthodes statiques ont tendance à faire des essais difficiles. Serait-il possible pour vous d'avoir ces non-méthodes statiques de la classe; puis à l'injecter un objet de cette classe dans le code que vous avez qui en a besoin?
Je suppose que de ce que l'OP a dit que les méthodes statiques sont utilisés dans les tests, ils n'retour moqué des objets. Ils ne sont pas utilisés dans le non-code d'essai.
OK, je l'ai lu différemment. @Adam, pouvez-vous préciser? Sont les méthodes statiques partie de votre application, ou tout simplement tester un échafaudage?
Afin de clarifier les méthodes statiques sont une partie de test de l'échafaudage.
Pourquoi? Ne pouvez-vous pas juste de les rendre non-méthodes statiques quelle que soit la classe de test où ils vivent?

OriginalL'auteur BlueLettuce16 | 2012-07-27

Leave a Reply

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *