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

TestNG:无法在TestBase类中使用参数TearUp方法,testng,Testng,更新到6.9.10后,我仍然面临同样的问题 我的情况与我在BaseTest类中使用的参数略有不同 例如: 当我在eclipse中运行测试时,右键单击“Test1.java”>RunAs>TestNG测试 Getting error: "Parameter 'username' is required by @Configuration on method beforeClass but has not been marked @Optional or defined" testNG xml f

更新到6.9.10后,我仍然面临同样的问题

我的情况与我在BaseTest类中使用的参数略有不同

例如:

当我在eclipse中运行测试时,右键单击“Test1.java”>RunAs>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);
    }
}
获取错误:“参数‘username’是beforeClass方法上@Configuration所必需的,但尚未标记为@Optional或defined”
testNG xml文件:
使用@BeforeClass方法的TestBase类:
公共抽象类测试库{
@参数({“用户名”})
@课前
public void beforeClass(字符串用户名){
System.out.println(用户名);
}
}
公共类Test1扩展了TestBase{
@课前
公共无效启动(){
Assert.assertTrue(false);
}
@试验
公共无效测试01(){
Assert.assertTrue(true);
}
}

您收到的此错误是因为您对TestBase类的
beforeClass
方法使用了@Parameter注释,并且当您通过右键单击>run As>TestNG Test运行此类时,不会向此方法传递任何参数。这可以通过在
beforeClass
方法中传递可选参数来解决。将
beforeClass
方法修改为

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

@可选注释传递在不使用testng.xml运行java类时指定的值。希望有帮助

或者他也可以在eclipse插件中配置参数。