Skip to content
Software Testing Journal
Software Testing Journal

Your daily dose of learning!

  • Blog
  • Help Center
  • Video Playlist
  • Podcast & FAQ
  • Privacy Policy
Software Testing Journal

Your daily dose of learning!

Properties Files in Java with Owner library

Dheeraj Gambhir, 2023-09-042023-09-04


When we create an automation test framework, most of us use properties files to get any configuration like URL, credentials, or whatever data you need to change frequently as a configuration.

In this blog, we will discuss how we can easily manage properties files with the Owner Java library makes properties file management very easy, and minimizes the code required to handle application configuration through Java properties files.

If you are using Maven, things are quite simple, just add the following section to your pom.xml:

<dependencies>

<dependency>

    <groupId>org.aeonbits.owner</groupId>

    <artifactId>owner</artifactId>

    <version>1.0.12</version>

</dependency>

</dependencies>

Note* At the time of writing this page, the latest version is 1.0.12, but you need to check if there is any newer version here: https://mvnrepository.com/artifact/org.aeonbits.owner/owner

Suppose your properties file is defined as Config.properties:

url=https://softwaretestingjournal.com/

env=qa

username=dheerajgambhir

password=secured

timeout=9000

To access this property, you need to define a Java interface like shown below: ExampleConfig.java:

import org.aeonbits.owner.Config;

@Config.Sources({“classpath:Config.properties”})

public interface ExampleConfig extends Config {

    String url();

    String env();

    String username();

    String password();

    int timeout();

}

Note that the above interface extends from Config, which is a marker interface recognized by OWNER as valid to work with.

Now, how to read these values from the properties file? Here you go…

public class OwnerExample {

   public void usage() {

        ExampleConfig exampleConfig = ConfigFactory.create(ExampleConfig.class);

        String url = exampleConfig.url();

        String env = exampleConfig.env();

        String username = exampleConfig.username();

         String password = exampleConfig.password();

        int timeout = exampleConfig.timeout();

    }

 }

 Isn’t it too easy? In case you have multiple properties files, you can use @Config.LoadPolicy(Config.LoadType.MERGE) annotation to tell the Owner to merge files.

 Sample:

import org.aeonbits.owner.Config;

@Config.LoadPolicy(Config.LoadType.MERGE)

@Config.Sources({

        “classpath:Config1.properties”,

        “classpath:Config2.properties”

})

public interface ExampleConfig extends Config {

    String url();

    String env();

    String username();

              String password();

              int timeout();

}

Owner is a rich API that allows you to add additional behaviors and has more interesting features like how to use @DefaultValue and @Key annotations. Read here for more information: http://owner.aeonbits.org/docs/usage

Enjoyed reading this article? Please share the knowledge with your friends and colleagues.

If you find this post helpful, please share them with your colleagues and friends.

  • Facebook
  • Twitter
  • LinkedIn
  • Email
Automation TestAutomation SeleniumTips

Post navigation

Previous post
Next post
©2025 Software Testing Journal | WordPress Theme by SuperbThemes