尝试从单独的类中的Actionperformed / jbutton调用testng.xml文件时如何解决NoClassDefFoundError?

时间:2017-12-14 15:47:38

标签: java xml maven testng classpath

我正在尝试使用Selenium WebDriver和testNG从我创建的Java GUI测试平台运行并行测试。测试平台与testNG环境分开。当我从XML文件运行并行测试时,测试运行正常。当我启动GUI并尝试单击我指定的按钮来调用XML文件时,我得到“线程中的异常”AWT-EventQueue-0“java.lang.NoClassDefFoundError:org / testng / TestNG”。根据我研究过的答案,似乎这是一个类路径问题。我确保所有必需的testNG jar文件都在构建路径中。

else if(e.getSource() == bTestParallel) { //Test Parallel
      try {

            TestAllTestCases.runXML();

        } catch (Exception e1) {
            e1.printStackTrace();
        }
    }

这是应该运行xml文件的jbutton执行的代码。

public static void runXML() {
    // Create object of TestNG Class
    TestNG runner=new TestNG();

    // Create a list of String 
    List<String> suitefiles=new ArrayList<String>();

    // Add xml file which you have to execute
    suitefiles.add("C:\\Users\\AFSW-NE\\git\\AfsTestBed\\testng.xml");

    // now set xml file for execution
    runner.setTestSuites(suitefiles);

    // finally execute the runner using run method
    runner.run();

这就是按下按钮时调用的方法。调试时,似乎runXML()方法就是问题所在。它说runXML()抛出NoClassDefFoundError,原因是ClassNotFoundException“org.testng.TestNG”。所以我认为它必须是类路径的东西,但我不确定是什么。 pom文件中的依赖项存在,并且jar也存在。

1 个答案:

答案 0 :(得分:0)

只有当类不在类路径中时才会发生NoClassDefFoundError。在eclipse中,在构建路径中,有一个库的选项卡,然后查看是否添加了jar,如果是,则自动取消选中构建,然后再次选择它。它然后工作,面临同样的问题,有人建议我这样做,它的工作。试试看它是否有效,希望它有所帮助..