如何通过(Maven、TestNG、Java)获取运行时值
我刚刚开始用Java自动化我的Web服务项目。我需要在Jenkins中运行它,所以我用TestNG框架和Maven构建了这个项目。我能够与Jenkins一起运行一些自动化测试套件,没有任何问题 现在我遇到的问题是,我需要在运行时获得用户输入(比如主机名、用户名、密码等),然后测试套件应该相应地运行 我面临的问题是,当在控制台中输入时,光标不会返回到程序,它很容易进入理想状态 PFA截图:如何通过(Maven、TestNG、Java)获取运行时值,java,maven,jenkins,testng,Java,Maven,Jenkins,Testng,我刚刚开始用Java自动化我的Web服务项目。我需要在Jenkins中运行它,所以我用TestNG框架和Maven构建了这个项目。我能够与Jenkins一起运行一些自动化测试套件,没有任何问题 现在我遇到的问题是,我需要在运行时获得用户输入(比如主机名、用户名、密码等),然后测试套件应该相应地运行 我面临的问题是,当在控制台中输入时,光标不会返回到程序,它很容易进入理想状态 PFA截图: 让您的测试具有交互性是绝对糟糕的方法-构建根本不可复制,让其他人知道预期的参数等等 如果您的测试用例需要在
让您的测试具有交互性是绝对糟糕的方法-构建根本不可复制,让其他人知道预期的参数等等 如果您的测试用例需要在运行时获取参数(或者更准确地说,需要在maven构建开始之前设置参数),那么您有几个选项 选项#1。属性文件和maven资源处理。 想法就是在项目中有一个属性文件,并告诉maven解析变量 价值观。例如: Pom.xml:
<resources>
<resource>
<directory>src/test/resources/data</directory>
<filtering>true</filtering>
</resource>
</resources>
然后以以下方式运行maven build:
mvn -DmyVar=value clean install
您不仅可以使用属性文件,还可以使用任何其他文件类型(例如XML)
提示:您可以使用maven enforcer插件强制用户输入-DmyVar,如果未设置所有必需的属性,该插件将无法生成
选项2。属性文件和Spring DI。
这个想法和上面的几乎一样,但Spring被用来注入所有必要的东西来测试类。比如:
@Component
public class MyTest
{
@Value(${myProperty})
private String myValue;
// ... Test methods which can use myValue ...
}
有关可能的弹簧配置的完整示例,请参阅
顺便说一句,您的测试是一个单元测试,但是集成测试——如果它涉及部署web服务或类似的东西的话。因此,明智的做法是将单元测试(maven surefire插件)和集成测试(maven failsafe插件)分开。为此使用
属性
和配置文件
@Component
public class MyTest
{
@Value(${myProperty})
private String myValue;
// ... Test methods which can use myValue ...
}