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 minimize 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://testersdigest.blogspot.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’s 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 have more interesting features like how to use @DefaultValue and
@Key annotations. Read here for more information: http://owner.aeonbits.org/docs/usage
Nice and good article. It is very useful for me to learn and understand easily. Thanks for sharing
ReplyDeleteSelenium Testing Course Online
Best Selenium Course Online