I prefer to annotate the setters instead of the attributes on the classes. For example:
public class SomeClass implements SomeInterface {
private PetRepository petRepository;
private VetRepository vetRepository;
private OwnerRepository ownerRepository;
private VisitRepository visitRepository;
... some methods ...
@Resource
public void setPetRepository(PetRepository petRepository) {
this.petRepository= petRepository;
}
@Resource
public void setVetRepository(VetRepository vetRepository) {
this.petRepository= vetRepository;
}
@Resource
public void setOwnerRepository(OwnerRepository ownerRepository) {
this.ownerRepository = ownerRepository;
}
@Resource
public void setVisitRepository(VisitRepository visitRepository) {
this.visitRepository= visitRepository;
}
}
Then you can create a test case like this with Mockito and Junit:
public class SomeClassTestCase {
@Mock
private PetRepository petRepository;
@Mock
private VetRepository vetRepository;
@Mock
private OwnerRepository ownerRepository;
@Mock
private VisitRepository visitRepository;
private SomeClass someClass;
@Before
public void before(){
MockitoAnnotations.initMocks(this);
someClass = new SomeClass();
someClass.setPetRepository(petRepository);
someClass.setVetRepository(vetRepository);
someClass.setOwnerRepository(ownerRepository);
someClass.setVisitRepository(visitRepository);
}
@Test
public void someTest() {
...
}
}
Hope it helps.