2013-11-21 43 views
0

我刚开始使用Java自动化我的Web服务项目。我需要在Jenkins中运行它,所以我使用TestNG框架和Maven构建了该项目。我能够在没有任何问题的情况下与Jenkins运行一些自动化测试套件。如何通过(Maven,TestNG,Java)获得运行时值

现在我有类似的问题,我需要在运行时获取用户输入(例如HostName,UserName,Password等),然后测试套件应该相应地运行。

我面对的问题就像在控制台中输入光标时没有回到程序,它很容易进入理想状态。

PFA截图:

Test case running as Maven build

Test case running as TestNG

+0

使用'properties'和'profiles'为此 – MariuszS

回答

1

使你的测试互动绝对是不错的办法 - 构建仅仅是不可复制的,在所有的,让其他人知道预期什么参数等等。

如果你的测试用例需要在运行时带参数(或者更准确的说,需要在Maven构建开始之前设置它们),你有几个选择。

选项#1。属性文件和maven资源处理。

想法只是在您的项目中有一个属性文件,并告诉maven在那里解决变量 值。例如:

的pom.xml:

<resources> 
    <resource> 
    <directory>src/test/resources/data</directory> 
    <filtering>true</filtering> 
    </resource> 
</resources> 

/src/test/resources/data/myproperties.properties:

myVar = ${myVar} 

然后运行行家作为构建:

mvn -DmyVar=value clean install 

您不仅可以使用属性文件,而且可以使用任何其他文件类型(例如XML)。

提示:可以使用Maven的实施者 - 插件强制用户输入-DmyVar,如果所有需要的属性未设置这个插件将无法构建。

选项#2。属性文件和Spring DI。

想法与上面几乎相同,但Spring用于注入所有必要的东西来测试类。例如:

@Component 
public class MyTest 
{ 
    @Value(${myProperty}) 
    private String myValue; 

    // ... Test methods which can use myValue ... 
} 

有关可能的Spring配置的完整示例,请参阅this answer

顺便说一句,你的测试是一个单元测试,但集成测试 - 如果它涉及到部署你的Web服务或其他类似的东西。因此,拆分单元测试(maven-surefire-plugin)和集成测试(maven-failsafe-plugin)将是明智之举。

+0

我接受您的建议并将执行它。谢谢... –

相关问题