тьфу, страшные статические методы.Я слышал, что JMockit способен снимать статику, но сам никогда не пробовал.Решением, которое я обычно использую, является Адаптер.
public class FilesAdapter {
private final File file;
public FilesAdapter( File file ) {
this.file = file;
}
public List<String> readLines( Charset charset ) {
return Files.readLines( file, charset );
}
}
Вы можете по желанию иметь FilesAdapter
реализующий интерфейс, хотя, поскольку это объект единственного назначения, я обычно не буду.
GUICE способен впрыскивать конкретные объекты, а также макетные структуры, такие как JMock2 и Mockito, также могут имитировать бетоны.Это все дело ученых, и разные люди будут иметь разные мнения.
Если бы вы использовали GUICE, вы бы завернули этого парня на фабрику для инъекционного совершенства.
public class FilesAdapter {
private final File file;
@Inject
protected FilesAdapter( @Assisted File file ) {
this.file = file;
}
public List<String> readLines( Charset charset ) {
return Files.readLines( file, charset );
}
public interface Factory {
FilesAdapter create( File file );
}
}