Что мне нравится делать, так это создавать класс, имеющий поле для всех внешних зависимостей, а также статические методы. например:
public class DanceMakerDependecies{
private URL url;
public String getCurrentUser(){ // not static, so very easy to test
return UserManager.currentUser().getName();
}
//getter and setters
}
public class DanceMaker{
public DanceMaker(DanceMakerDependecies dep){
..
}
// you could also create default constructor with the default dependencies
}
public class DanceMakerTest{
@Test
void dance(){
DanceMaker dm = new DanceMaker();
dm.setDependecies(EasyMock.createMock(DanceMakerDependecies.class));
//etc.
}
}
Я знаю, что пуристы предпочитают просто вводить все в класс, но я считаю, что этот способ тестирования гораздо проще. попробуйте и посмотрите, что вы об этом думаете (могу поспорить, что это не лучший пример практики или дизайна, но мне это нравится).