Bonjour,
Voici une classe avec laquelle je travaille:
Code :
- package com;
- public class A {
- protected class InA {
- InA() {
- }
- public void meth1() {
- meth2();
- }
- protected void meth2() {
- }
- }
- }
|
Cette classe existait déjà, le seul refactoring que j'ai fait c'est isoler du code dans meth2(), qui était dans meth1(). Au moment ou tout ce code a été écrit, aucun test unitaire n'a été écrit. Je dois donc en faire. Je veux faire un test unitaire sur meth1() et comme je ne peux pas utiliser la méthode meth2() pour les tests unitaires (pas le même comportement), il faut que je la mocke pour lui faire renvoyer ce qui est attendu. Ce qui compte c'est le test de meth1().
Voici une version de ma classe de test qui ne marche pas:
Code :
- package com;
- import com.A.InA;
- public class TestA {
- protected class MockInA extends InA {
- public MockInA() {
- super(); // No enclosing instance of the type A is accessible in scope
- }
- protected void meth2() {
- }
- }
- }
|
Je ne comprends pas ce No enclosing instance of the type A is accessible in scope (erreur sur super)
Voici comment je contourne le problème:
Code :
- package com;
- import com.A.InA;
- public class TestA2 {
- protected class Englobe extends A {
- protected class MockInA extends InA {
- public MockInA() {
- super(); // OK
- }
- protected void meth2() {
- }
- }
- }
- }
|
J'aimerais bien comprendre ce qui se passe... Pourquoi je dois encore rajouter une classe bidon pour englober (Englobe) ?
Merci d'avance pour vos explications.
Message édité par cimourdain le 16-09-2010 à 12:25:53