Question

I'm writing tests for an app that refers to a hardcoded filename "classpath:config.properties". It isn't possible to change this name. Is there any way to test this app with different configs? i.e. different tests supply different configs at runtime?

This is an odd requirement, but I'd deeply appreciate any inputs

Was it helpful?

Solution

Here is another question that might help you:

Dynamically loading properties file using Spring

Or you can always overwrite the properties file using the Java IO libraries.

OTHER TIPS

It's all about classpath - what jars are in classpath and how you organize your project structure.

User maven so that resources from 'src/test/resources' are loaded before 'src/main/resources'. But generally the best way is to separate application-specific config resources from application code.

Alternatively, you can split the project with config resources into 3 or 4 projects:

  • project with code
  • project with config resources, added to app classpath, but not to test classpath
  • project with test resources, added to test classpath, but not to the app classpath
  • optionally, you can move JUnit test code to separate project

If you load your configuration from classpath:config.properties then these properties reside in src/main/resources folder.

When you run tests you can put your mock configuration in src/test/resources and it will "override" main configuration.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top