W komponencie Spring mam instrukcję @PostConstruct
. Podobny do poniżej:Jak wyłączyć @PostConstruct na wiosnę podczas testu
@Singleton
@Component("filelist")
public class FileListService extends BaseService {
private List listOfFiles = new Arrays.list();
//some other functions
@PostConstruct
public void populate() {
for (File f : FileUtils.listFiles(new File(SystemUtils.JAVA_IO_TMPDIR), new String[]{"txt"},true)){
listOfFiles.add(f.getName());
}
}
@Override
public long count() throws DataSourceException {
return listOfFiles.size();
}
// more methods .....
}
Podczas testów jednostkowych nie chciałby mieć funkcję @PostConstruct
nazwie, czy istnieje sposób, aby opowiadać Wiosna nie wolno publikować przetwarzanie? A może jest lepsza adnotacja do wywoływania metody inicjacji w klasie, która nie jest testowana?
Czy jest to FileListService, które chcesz przetestować lub inne klasy w zależności od tego? – mrembisz
Usługa FileListService jest wymagana przez testowaną usługę sieci Web - publiczna klasa FileWSTest przedłuża program JerseyTest, który korzysta z kontenera WWW grizzly. – Ben
Można go wyśmiać za pomocą podklasy lub zoptymalizować część inicjalizacyjną. Możesz umieszczać fałszywe próbki w paczce skanowanej tylko w celach testowych i oznaczać ją jako '@ Primary'. – mrembisz