1

我有这样的代码

System.setProperty("citrus.xml.file.name.pattern", "/**/*test.xml");

我想在加载上下文文件和属性文件后更改文件名模式是否可以通过此代码

    @Test @Parameters("context")
  @CitrusXmlTest()
 public void xmlTest(@Optional @CitrusResource TestContext context)
{
   ct=context.getApplicationContext();
    StandardEnvironment config=  (StandardEnvironment) ct.getEnvironment(); 
    System.out.println("111111111111"+config.getPropertySources());
    MutablePropertySources msr=config.getPropertySources(); 
    Map m=new HashMap();
    m.put("citrus.xml.file.name.pattern","/**/*xyz.xml");
    MapPropertySource mps=new MapPropertySource("systemProperties", m);
    msr.addFirst(mps);

}

在这个测试用例之后我有另一个这样的测试用例

@CitrusXmlTest(packageScan= "com.citrus.testcases")
    public void CitrusTest() 
    {

    }

我正在尝试这段代码,但 citrus 并没有影响下一个测试用例中更改的系统属性,它正在执行开始加载的文件名模式是否有任何方法可以在运行时更改 citrus 的系统属性。任何人都可以帮助解决这个问题。

4

1 回答 1

0

Citrus 只会在启动时读取系统属性一次。这是因为这是一个应用程序范围的环境设置,启动后不应更改。

您似乎想根据某些条件加载测试用例。我宁愿使用 TestNG 测试套件定义,您可以在其中包含和排除基于包、命名和其他信息的测试。您可以在testng-documentation中阅读更多相关信息。

除此之外,我建议将这些测试放入不同的测试组,以便您可以轻松地在不同的测试运行中执行这些测试。

于 2017-12-27T15:28:35.550 回答