# Testen mit Mockito



## JonnyRico (15. Sep 2011)

Hi,

ich beschäftige mich gerade ein bisschen mit dem Testmanagement. Ich habe eine Klasse X


```
public class X{

    @EJB
    MyEJB ejb;
    
    private void myMeth() {
       // do nothing
    }
}
```

Ich möchte jetzt gerne das Attribut ejb mocken, doch leider bin ich mit meinem Test natürlich in einem anderen Package (/src/test/java/...) als die Quellen(/src/main/java/...). Demzufolge habe ich keinen Zugriff auf das Attribut 
Ich würde erwarten, dass jeder dieses Problem haben sollte, daher gibt es sicher jemand der weiß was man dagegen unternimmt. Die Kapselung in der Businesslogik aufbrechen, kann ja nicht die Lösung sein. Bin für jeden Tipp dankbar. Vielen Dank im Voraus.

Gruß

Jonny


----------



## kama (15. Sep 2011)

Hi,


JonnyRico hat gesagt.:


> Ich möchte jetzt gerne das Attribut ejb mocken, doch leider bin ich mit meinem Test natürlich in einem anderen Package (/src/test/java/...) als die Quellen(/src/main/java/...).


Also basierend auf den Angaben vermute ich mal, dass Du einen Maven Build hast...weiterhin sind die Angaben dort keine Packages sondern wo die Packages liegen...Wenn Du tatsächlich andere Packages haben solltest, dass sind die Einstellungen in der IDE nicht in Ordnung...

Gruß
Karl Heinz Marbaise


----------



## mvitz (15. Sep 2011)

Ansonsten gibt es die folgenden Möglichkeiten:

1) Man nutzt anstatt Feldinjektion Konstruktorinjektion
2) Man nutzt anstatt Feldinjektion Setterinjektion
3) Man nutzt für die Tests Reflection um das Feld zu setzen (ich hatte dafür auch mal eine ganz schlanke Lib, die das einem sehr einfach gemacht hat, aber im Endeffekt ist das durch eine kleine eigene Utilityklasse auch zu erledigen.

1 geht afaik mit EJBs nicht, blieben dir eben noch gleiches package oder 2 bzw. 3


----------

