How to disable @PostConstruct in Spring during Test
annotations, java, postconstruct, spring
Solution
Since you are not testing `FileListService` but a depending class, you can mock it for tests. Make a mock version in a separate test package which is scanned only by test context. Mark it with `@Primary` annotation so it takes precedence over production version.
Problem
Within a Spring Component I have a `@PostConstruct` statement. Similar to below: ``` @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 ..... } ``` During Unit tests I would not like to have the `@PostConstruct` function called, is there a way to telling Spring not to do post processing? Or is there a better Annotation for calling a initiation method on a class durning non-testing ?