@Optional注释未在TestNG中使用@BeforeMethod注释传递指定值

时间:2014-10-21 18:57:17

标签: java testing annotations automated-tests testng

我目前正在研究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

1 个答案:

答案 0 :(得分:1)

最后我能够解决这个问题,这是因为jmockit正在创建传递Optional值的层次结构,

在我的案例中,可选值已传递到@BeforeClass,但无法在@optional Values中传递@BeforeMethod,因为我们未在测试中使用Dataprovider

我们删除了jmockit,现在工作正常