当前位置: 首页 > 知识库问答 >
问题:

@Optional annotation没有在TestNG中通过@BeforeMethod annotation传递指定的值

鲁英卫
2023-03-14
@BeforeMethod
@Parameters({"type"})
public void beforeMethod(@Optional("Krishna") String type)
{
    System.out.println("Type in Before Method is="+type);
}

在这里,我得到这个方法中的值类型为NULL。

但是,如果我使用的是其他testNG注释,比如@beforeSuite、@beforeTest、@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);
}
}

请帮助我确定为什么null是在测试后和测试后传递的

共有1个答案

欧阳智志
2023-03-14

最后,我能够解决这个问题,这是因为jmockit为传递可选值创建了层次结构,

在我的例子中,可选值一直传递到@beforeClass,但无法在@beforeMethod中传递@Optional值,因为我们在测试中没有使用DataProvider

我们已经删除了jmockit,现在它可以正常工作了

 类似资料:
  • 问题内容: Go中的地图是否通过值或引用传递? 始终可以将函数定义为以下形式,但这是一个过大的杀伤力吗? 相同的返回值问题。我应该返回指向地图的指针,还是将地图作为值返回? 这样做的目的当然是避免不必要的数据复制。 问题答案: 在此线程中,您将找到答案: Golang:使用地图参考来访问地图 您不需要在地图上使用指针。 映射类型是引用类型,例如指针或切片[1] 如果需要更改会话,可以使用一个指针:

  • 问题内容: 我一直遵循本文中@tulskiy的建议,通过JNI将Java中的c指针存储在Java中通过JNI在C和Java之间传递指针 诀窍是将指针转换为jlong​​。所以从c我有 我返回一个jlong​​(始终为64位),因为我希望我的代码在64位和32位系统上都能工作。64位计算机上64位指针在内存中的大小为64,而在32位计算机上,内存中指针的大小为32位。 问题是在32位计算机上,我收到

  • 问题内容: 我有以下代码: 有人可以解释为什么输出是:零一二二。 摘自zend认证学习指南。 问题答案: 因为在第二个循环中,仍然是对最后一个数组项的引用,所以每次都将其覆盖。 您可以看到这样的内容: 如您所见,最后一个数组项采用当前循环值:“零”,“一个”,“两个”,然后就是“两个” …:)

  • 本文向大家介绍为什么我们在C ++中通过引用传递指针?,包括了为什么我们在C ++中通过引用传递指针?的使用技巧和注意事项,需要的朋友参考一下 如果需要修改指针而不是指针指向的对象,则可以按引用传递指针。 这是如何通过引用传递指针的示例- 示例 输出结果

  • 问题内容: 如何使用将值传递给页面? 问题答案: 应该工作正常。 这里有两个选项,它们打开HTTP POST,并包含要提交的数组数组。可用于向 s 提交数据。 重要的是要注意,$ data采用两种格式,并且这决定了将如何编码邮政数据。 as :数据将以服务器并不总是接受的方式发送。 curl_setopt($handle, CURLOPT_POSTFIELDS, $data); 作为url编码的字

  • 问题内容: 我有一个要使用函数更改的切片(例如,我想删除第一个元素)。我以为可以使用指针,但仍然无法为其编制索引。我究竟做错了什么? 游乐场链接: 问题答案: 您需要使用。 或通常更像偶像的另一种方法: