假设我有两个用于运行项目Web测试的maven配置文件:
1.首先使用说http://ci.blahblah.com:8080
地址部署到CI tomcat实例,然后运行测试
2.可以使用tomcat:run部署到嵌入式tomcat的开发人员的第二个配置文件。因此,他们的网络测试地址就像http://localhost:8080
现在我在pom文件中创建了两个配置文件,并在<properties>
部分中创建了每个配置文件。我还为每个配置文件创建了具有不同地址的<base.url>
属性。
我现在有什么方法可以将这些值读入我的java类,在那里我使用Webdriver启动web测试,所以我可能会像driver.get("address from pom <base.url>")
一样......
它只允许开发人员在提交他/她的代码之前在本地运行Web测试。
答案 0 :(得分:3)
您可以使用maven resource filtering。例如:
首先更改代码,以便从属性文件中提取地址。许多方法(使用spring propertyplaceholderconfigurer等直接读取属性文件)
String address = getAddressFromPropertiesFileOrInjectedFromSpringOrWherever();
driver.get(address)
接下来创建将存储此信息的属性文件,最有可能在src / main / resources中。确保您的属性的值使用与maven变量相同的名称:
webAddres=${base.url}
确保根据上面的链接在您的个人资料中设置过滤。
答案 1 :(得分:0)
如果我理解正确,请尝试调用此系统:
mvn org.apache.maven.plugins:maven-help-plugin:evaluate -Dexpression=base.url
答案 2 :(得分:0)
您还可以在 web.xml 中使用环境条目,并在您的网络应用中解析它。
示例:
<强>的web.xml 强>
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
version="3.1">
<env-entry>
<env-entry-name>projectStage</env-entry-name>
<env-entry-type>java.lang.String</env-entry-type>
<env-entry-value>Development</env-entry-value>
</env-entry>
...
</web-app>
Webapp代码
String projectStage = "";
try {
Context context = new InitialContext();
Context environment = (Context) context.lookup("java:comp/env");
projectStage = (String) environment.lookup("projectStage");
} catch (NamingException ex) {
//
}