TestNG:无法在TestBase类中使用参数TearUp方法

时间:2016-08-11 03:43:43

标签: testng

我在更新到6.9.10后仍面临同样的问题。

我的情况与BaseTest类中使用Parameter

的情况略有不同

示例:

当我在eclipse中运行测试时,右键单击" Test1.java" >运行方式> TestNG测试

Getting error: "Parameter 'username' is required by @Configuration on method beforeClass but has not been marked @Optional or defined"

testNG xml file:

<?xml version="1.0" encoding="UTF-8"?>

<suite name = "MiscSuite">
    <parameter name="username" value="username">
    <test name = "MiscTest">
        <classes >
            <class name="drkthng.misc.RunAllTestClasses01" />
        </classes>
    </test>
</suite>

TestBase class with a @BeforeClass method: 


public abstract class TestBase {
    @Parameters({"username"})
    @BeforeClass
    public void beforeClass(String username) {
        System.out.println(username);
    }
}


public class Test1 extends TestBase {

    @BeforeClass
    public void startUp() {
        Assert.assertTrue(false);
    }

    @Test
    public void Test01() {
        Assert.assertTrue(true);
    }
}

1 个答案:

答案 0 :(得分:1)

您得到的错误是因为您已经为TestBase类的beforeClass方法使用了@Parameter注释,并且当您通过右键单击&gt;运行此类时,不会将任何参数传递给此方法。运行方式&gt; TestNG测试。这可以通过在beforeClass方法中传递可选参数来解决。将您的beforeClass方法修改为

    @Parameters({"username"})
    @BeforeClass
    public void beforeClass(@Optional("username") String username) {
        System.out.println(username);
    }

@Optional注释传递在没有testng.xml的情况下运行java类时指定的值。希望它有所帮助!