我有一个Java项目,其中包含JUnit测试,需要通过Jenkins在不同的测试环境(Dev,Staging等)上运行。
目前,我必须在不同环境上构建项目并将URL,用户名和密码传递给测试运行程序的解决方案是在POM文件中加载每种环境的特定属性文件。将通过Maven构建命令为每个环境设置属性文件:
MVN全新安装-DappConfig = / src / test / resouces / integration.environment.properties
在pom.xml中:
<plugins>
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<systemPropertyVariables>
<appConfig>${app.config}</appConfig>
</systemPropertyVariables>
</configuration>
</plugin>
</plugins>
在JUnit测试运行器类中:
public class BoGeneralTest extends TestCase {
protected WebDriver driver;
protected BoHomePage boHomePage;
protected static Properties systemProps;
String url = systemProps.getProperty("Url");
String username = systemProps.getProperty("Username");
String password = systemProps.getProperty("Password");
int defaultWaitTime = Integer.parseInt(systemProps.getProperty("waitTimeForElements"));
String regUsername = RandomStringUtils.randomAlphabetic(5);
final static String appConfigPath = System.getProperty("appConfig");
static {
systemProps = new Properties();
try {
systemProps.load(new FileReader(new File(appConfigPath)));
} catch (Exception e) {
e.printStackTrace();
}
}
此配置的问题是,现在各个测试无法通过Eclipse单独运行,因为它们希望从maven接收appConfig
,并且我得到了NullPointerException。
任何建议都会受到赞赏。
IntegrationTests应该以某种方式将真正的依赖项注入安全的环境中并进行测试。
黑匣子测试:
FunctionalTests是我想您要实现的。通常,您可以从集成测试中使用相同的配置,将所有自动化测试捆绑在项目pom中,然后在每个mvn clean isntall上原子地执行测试。一般流程是在集成前测试阶段启动servlet容器,然后对它进行测试。您应该始终从用户角度进行测试。