TestNG:@Parameters不起作用

时间:2016-03-30 14:51:40

标签: java intellij-idea testng

我已经开始学习TestNG了,这段代码对我不起作用:

package com.automation;

import org.testng.annotations.Parameters;
import org.testng.annotations.Test;

public class TestNg_ParameterTestClass {

    @Parameters({"Param1","Param2"})
    @Test(enabled = true)
    public void testTestExample(String p1, String p2){
        System.out.println("Parameter's value : " + p1 + ", " + p2);
    }
}

testng.xml是空的,因为我直接从IntelliJ运行测试方法,并且每次收到此消息:

Test ignored.
Test ignored.
===============================================
Default Suite
Total tests run: 1, Failures: 0, Skips: 1
===============================================

你知道什么是错的,为什么testNG会跳过它?

感谢您的帮助, 拉法尔

3 个答案:

答案 0 :(得分:3)

TestNG正在跳过您的测试,因为您没有将必需参数传递给它。

您应该可以通过IntelliJ的Run/Debug Configurations菜单进行操作。

否则你必须使用@Optional

答案 1 :(得分:3)

这个问题的答案非常简单。

@Parameters({" Param1"," Param2"}),Param1和Param2是testng.xml中参数的名称,这些值不是分配给String的值p1,运行时字符串p2。

必须定义两个XML参数,否则将忽略测试。您可以使用" Optional"定义自动分配给p1和p2的可选值。注释:

@Parameters({"param1","param2"})
@Test(enabled = true)
public void testTestExample(@Optional("test1111") String p1, @Optional("test2222")String p2){
    System.out.println("Parameter's value : " + p1 + ", " + p2);
}

答案 2 :(得分:0)

您需要在Testng.xml中定义这两个参数(Param1,Param2),然后只有您可以在测试类中使用它。

您需要正确定义testng.xml才能使用@Parameters

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Suite">
<test thread-count="5" name="Test">
<parameter name="Param1" value="Value_Of_Param1"/>
<parameter name="Param2" value="Value_Of_Param2"/>
<classes>
  <class name="CLASS_NAME"/> 
 </classes>
 </test> <!-- Test -->
 </suite> <!-- Suite -->

检查第5行和第6行,您将获得解决方案。希望它会有所帮助。