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

TestNG:在Eclipse中返回数据提供商中的迭代器时,ClassCastExcture

秦学林
2023-03-14

在TestNG测试中,我使用一个返回迭代器对象的数据提供程序,但是当我运行测试时,我得到了一个错误。有人能解释一下为什么这是错误的,我应该怎么做来修复它?

Eclipse版本:

Eclipse Java EE IDE for Web Developers.

Version: Oxygen.3a Release (4.7.3a)
Build id: 20180405-1200

Java版本

java version "10.0.1" 2018-04-17
Java(TM) SE Runtime Environment 18.3 (build 10.0.1+10)
Java HotSpot(TM) 64-Bit Server VM 18.3 (build 10.0.1+10, mixed mode)

数据提供商

  @DataProvider(name = "SmokeTestData", parallel = true)
public Iterator<SmokeTestData> smokeTestData(ITestContext context) {
    String fileName = context.getCurrentXmlTest().getParameter("filename");
    int numberOfTests = SmokeTestData.getNumberOfTests(fileName, true);
    SmokeTestData[] testSuiteData = new SmokeTestData[numberOfTests];
    for (int i = 1; i <= numberOfTests; i++) {
        testSuiteData[i-1] = new SmokeTestData(fileName, i);
    }
    return (Stream.of(testSuiteData)).iterator();
}

测验

 @Test(description = "Smoke Test", dataProvider = "SmokeTestData", groups =
        {"SmokeTest"})
@Description("Smoke Test")
@Severity(SeverityLevel.NORMAL)
public void smokeTest(SmokeTestData smokeTestData) {
    selectEnv(smokeTestData.getUrl());
    loginPage.get().smoketest(smokeTestData.getEnvironment(), smokeTestData.getEmail(), smokeTestData.getPassword());
    serviceAvailabilityPage.get().smoketest();
    referralRequestStatusPage.get().smoketest();
}

数据

Environment,Url,Email,Password
DE,https://somedomain.com/index.php/login,user@somedomain.com,somePW!1
IN,https://somedomain.com/index.php/login,user@somedomain.com,somePW!1
NM,https://somedomain.com/index.php/login,user@somedomain.com,somePW!1
MI,https://somedomain.com/index.php/login,user@somedomain.com,somePW!1
NV,https://somedomain.com/index.php/login,user@somedomain.com,somePW!1
AK,https://somedomain.com/index.php/login,user@somedomain.com,somePW!1

错误:

java.lang.ClassCastException: data.SmokeTestData cannot be cast to java.base/[Ljava.lang.Object;
at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1102)
at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:129)
at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:112)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1135)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
at java.base/java.lang.Thread.run(Thread.java:844)

感谢您提前提供的任何帮助!!

共有1个答案

南门新知
2023-03-14

我通过完全卸载Eclipse(包括以下文件夹)并清空垃圾箱解决了这个问题。

  • ~/。月食
  • ~/Library/Caches/org。日食站台ide
  • ~/Library/Saved Application State/org。日食站台石斑鱼类。保存状态
  • ~/Library/Preferences/org。日食站台石斑鱼类。普利斯特

然后安装了Eclipse IDE for Java Developers版本2018-09和TestNG插件。

 类似资料:
  • 我对Java和TestNg非常陌生。我创建了下面的DataProvider来返回一个hashmap到我的测试方法,但它似乎失败了,我无法找出问题所在。我正在将一个excel文件读入哈希图,并将其存储在列表中。然后我想返回对象中的hashmap。 感谢任何建议

  • 我已使用以下方法在应用程序中输入凭据。 其中EnterText定义如下: 在测试类中,我写了下面的代码 我得到以下错误: 失败:loginProxy(“11”,“Priya”)java.lang.NumberFormatException:java.lang.Integer处为空。parseInt(未知源)位于java.lang.Integer。parseInt(未知源) 请帮助解决同样的问题。据

  • 我是Spock的新手,目前正在使用它,但我继承了大量需要重复使用的测试配置文件。每个配置文件都是一个JSON,与Spec类同名。对于每种试验方法,都有一个带有参数的地图列表,例如: TestNG允许我在数据提供者方法中传递测试方法名称,因此我可以根据测试类名和测试方法名称返回映射列表。我的基类中只有一个数据提供者方法: 作为这种方法的结果,我得到了一组映射,用于每个测试迭代。然后我将这个方法指定为

  • 我有一个TestNG测试方法,使用数据提供程序使用多个参数运行: 有时我想并行运行检查测试,有时则不想。我可以通过将代码注释设置为DataProvider(parallel=true)或DataProvider(parallel=false)来控制这一点,但我希望将其作为运行时参数,而不是代码中的设置。 如何设置数据提供程序是否在TestNG套件XML文件中作为命令行参数或属性派生多个线程?

  • 问题内容: 我正在用硒编写以下代码,并且显示以下错误,请让我知道问题出在哪里。 导入org.testng.annotations.DataProvider; 导入org.testng.annotations.Test; 错误: 失败:testData org.testng.internal.reflect.MethodMatcherException:数据提供者不匹配方法:testData([Pa

  • 将这些视为对象: 查看java文档,对于LinkedList类,LinkedList类中没有迭代器方法的实现,但是,实现是在AbstractSequentialList类中。 listIterator()方法在AbstractList类中实现,AbstractSequentialList的父类,总结一下,如果我没弄错的话,它返回一个不使用节点概念的迭代器对象。 但是方法是在LinkedList类中