我在更新到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);
}
}
答案 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类时指定的值。希望它有所帮助!