我目前正在研究TestNG框架并面临的问题 -
我已经通过声明类似
的方法在类中的每个测试之前声明了一个运行方法@BeforeMethod
@Parameters({"type"})
public void beforeMethod(@Optional("Krishna") String type)
{
System.out.println("Type in Before Method is="+type);
}
这里我得到的方法中的值类型为NULL。
但是如果我正在使用@BeforeSuite,@ BeforeTest等其他testNG注释,那么@BeforeClass正常工作但@Optional注释没有传递@BeforeMethod和@AfterMethod注释的默认值。
我的完整测试课程是:
public class BeforeMethodTest
{
@BeforeSuite
@Parameters({"type"})
public void beforeSuite(@Optional("Krishna") String type)
{
System.out.println("Type in Before suite is="+type);
}
@BeforeTest
@Parameters({"type"})
public void beforeTest(@Optional("Krishna") String type)
{
System.out.println("Type in Before Test is="+type);
}
@BeforeClass
@Parameters({"type"})
public void beforeClass(@Optional("Krishna") String type)
{
System.out.println("Type in Before class is="+type);
}
@BeforeMethod
@Parameters({"type"})
public void beforeMethod(@Optional("Krishna") String type)
{
System.out.println("Type in Before Method is="+type);
}
@Test
public void test()
{
System.out.println("Test methods");
}
@AfterSuite
@Parameters({"type"})
public void afterSuite(@Optional("Krishna") String type)
{
System.out.println("Type in After suite is="+type);
}
@AfterTest
@Parameters({"type"})
public void afterTest(@Optional("Krishna") String type)
{
System.out.println("Type in After Test is="+type);
}
@AfterClass
@Parameters({"type"})
public void afterClass(@Optional("Krishna") String type)
{
System.out.println("Type in After class is="+type);
}
@AfterMethod
@Parameters({"type"})
public void afterMethod(@Optional("Krishna") String type)
{
System.out.println("Type in After Method is="+type);
}
}
,输出
输入套房之前=克里希纳
在测试之前输入= Krishna
输入课前是=克里希纳
键入Before Method = =
试验方法
键入After Method = =
输入After class = Krishna
输入After Test = Krishna
我已经通过右键单击类来执行此类,然后选择运行为testNG。
请帮助我确定为什么在过去和测试前传递null
答案 0 :(得分:1)
最后我能够解决这个问题,这是因为jmockit正在创建传递Optional值的层次结构,
在我的案例中,可选值已传递到@BeforeClass
,但无法在@optional Values
中传递@BeforeMethod
,因为我们未在测试中使用Dataprovider
。
我们删除了jmockit,现在工作正常