Java 测试执行TestNg中的重复测试方法

Java 测试执行TestNg中的重复测试方法,java,integration-testing,testng,Java,Integration Testing,Testng,我希望在包含不同环境参数的两个环境中执行相同的测试方法 我只是想用不同的系统参数复制测试执行中的每个测试方法 我可以使用IMethodInterceptor来实现此功能吗。或者使用TestNg中的任何扩展工具 谢谢。您可以使用TestNG Java代码: @Parameter({"parameterName"}) @Test public void testMain(String parameterName) {} TestNG XML套件: <suite name="Blah">

我希望在包含不同环境参数的两个环境中执行相同的测试方法

我只是想用不同的系统参数复制测试执行中的每个测试方法

我可以使用IMethodInterceptor来实现此功能吗。或者使用TestNg中的任何扩展工具

谢谢。

您可以使用TestNG

Java代码:

@Parameter({"parameterName"})
@Test
public void testMain(String parameterName) {}
TestNG XML套件:

<suite name="Blah">
  <test name="1">
    <parameter name="parameterName" value="var1" />
    ...
  </test>

  <test name="2">
    <parameter name="parameterName" value="var2" />
    ...
  </test>
</suite>

...
...
您可以使用TestNG

Java代码:

@Parameter({"parameterName"})
@Test
public void testMain(String parameterName) {}
TestNG XML套件:

<suite name="Blah">
  <test name="1">
    <parameter name="parameterName" value="var1" />
    ...
  </test>

  <test name="2">
    <parameter name="parameterName" value="var2" />
    ...
  </test>
</suite>

...
...

这在很大程度上取决于您的测试是如何设计的。
如果您的系统参数当前正在测试中初始化,并且系统设置也在测试中,那么您在运行之前所做的任何操作都将被设置回测试中的设置

如果将这些作为测试的全局值,那么可以使用侦听器根据testng xml中的参数更改这些值。参数可以处于测试级别,您可以像sumtin一样

<suite>
<test name="Sysconfig1">
<param name="sysparam1" value ="x"/>
<param name="sysparam2" value ="y"/>
<packages>
....
</test>
<test name="Sysconfig2">
<param name="sysparam1" value ="a"/>
<param name="sysparam2" value ="b"/>
<packages>
....
</test>

....
....
然后实现ITestListener的启动(ITestContext),并使用sysproperty1=context.getCurrentxmltest.gtparameter.get(“sysparam1”)

环境的初始化也可以在这些侦听器实现中完成。 只需将实现的侦听器添加到xml文件的


希望有帮助。

这在很大程度上取决于您的测试是如何设计的。
如果您的系统参数当前正在测试中初始化,并且系统设置也在测试中,那么您在运行之前所做的任何操作都将被设置回测试中的设置

如果将这些作为测试的全局值,那么可以使用侦听器根据testng xml中的参数更改这些值。参数可以处于测试级别,您可以像sumtin一样

<suite>
<test name="Sysconfig1">
<param name="sysparam1" value ="x"/>
<param name="sysparam2" value ="y"/>
<packages>
....
</test>
<test name="Sysconfig2">
<param name="sysparam1" value ="a"/>
<param name="sysparam2" value ="b"/>
<packages>
....
</test>

....
....
然后实现ITestListener的启动(ITestContext),并使用sysproperty1=context.getCurrentxmltest.gtparameter.get(“sysparam1”)

环境的初始化也可以在这些侦听器实现中完成。 只需将实现的侦听器添加到xml文件的


希望它能帮上忙。

谢谢你的回答,它非常适合我参加考试的情况。但是在这里我不能修改测试。我试图在运行时修改测试,并在方法拦截器内部的测试中添加参数,但没有成功。我只是想知道是否有任何地方可以对测试用例进行这样的更改并重新运行测试方法。你能分享一些代码吗?也许我能帮你更多的忙:)我正在编写示例代码发布在这里。谢谢你的帮助。我的场景的基本架构是,我使用基于testng侦听器和方法拦截器实现的单独代码来执行一些启动和拆卸功能,并对测试进行一些修改。我的核心是将测试包作为JAR或依赖性来获取,因此我无法控制测试类和testng.xml sThanx。对于您的答案,它非常适合我访问测试的情况。但是在这里我不能修改测试。我试图在运行时修改测试,并在方法拦截器内部的测试中添加参数,但没有成功。我只是想知道是否有任何地方可以对测试用例进行这样的更改并重新运行测试方法。你能分享一些代码吗?也许我能帮你更多的忙:)我正在编写示例代码发布在这里。谢谢你的帮助。我的场景的基本架构是,我使用基于testng侦听器和方法拦截器实现的单独代码来执行一些启动和拆卸功能,并对测试进行一些修改。我的核心是将测试包作为JAR或依赖性获取,因此我无法控制测试类和testng.xml