我正在使用maven sure fire插件从属性文件(testdata.properties)加载键值对,以便我可以在我的TestNG测试方法中使用它,如
@Test
public void testDBConnection()
{
String dbEnvUsed = System.getProperty("db.env");
String keyForDatabaseDriver = System.getProperty("db.driver");
String keyForDatabaseUrl = System.getProperty("db."+dbEnvUsed+".url");// value of the key "db.tst.url"
String keyForDatabaseUser = System.getProperty("db."+dbEnvUsed+".user";//value of the key "db.tst.user"
String keyForDatabasePassword = System.getProperty("db."+dbEnvUsed+".passwd");//value of the key "db.tst.passwd"
Connection conn = null;
try
{
Class.forName(dbDriver); // load the database driver
Connection conn = DriverManager.getConnection(keyForDatabaseUrl, keyForDatabaseUser, keyForDatabasePassword);
System.out.println("----> Connected to " + dbEnvUsed +" instance");
}
catch(java.sql.SQLRecoverableException sqlre)
{
System.out.println("----> Could not establish the connection. DB Server may be down.");
}
catch(Exception se)
{
System.out.println(se.getMessage());
}
Assert.assertNotNull(conn);//test the conection
}
testdata.properties文件的内容
db.driver = oracle.jdbc.driver.OracleDriver
db.env= tst
db.tst.url = jdbc:oracle:thin:@hostname:1521:sid
db.tst.user = tstUser
db.tst.passwd = *****
db.dev.url = jdbc:oracle:thin:@hostname:1521:sid
db.dev.user = devUser
db.dev.passwd = ######
摘自我的pom.xml
<plugins>
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<systemPropertiesFile>src/main/resources/testdata.properties</systemPropertiesFile>
</configuration>
</plugin>
</plugins>
我想更改键的值&#34; db.env&#34;在执行测试之前,无需编辑testdata.properties文件。有没有办法实现同样的目标?
答案 0 :(得分:1)
发现maven提供了一种覆盖属性文件中key的值的方法。以下是一种方法:
mvn -D<key.to.override>=<yourvalue>
就我而言,我这样做了:
mvn -Dtest= testDBConnection test -Ddb.env=tst
请注意,我在 testdata.properties 文件中定义了一个键“ db.env ”,该文件由maven-surefire-plugin加载。因此,可以使用System.getProperty("db.env");
在我的代码中访问键“db.env”的值。
要进行此操作(以某种方式加载属性文件,以便使用System.getProperty("key.in.your.property")
可以访问您的键值对),请在pom.xml中添加以下内容
<plugins>
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<systemPropertiesFile>src/main/resources/testdata.properties</systemPropertiesFile>
</configuration>
</plugin>