来自 LeanFT 项目的 Jar 文件 - Class 不可接受

Jar file from LeanFT project - Class not acceptable

我有一些基于 TestNGLeanFT 测试用例并尝试生成 jar 文件。我使用 IntelliJ IDEAFile -> Project Structure -> Project Settings -> Artifacts -> Jar -> From modules with dependencies 下设置工件的详细信息。我 select classname,但是报错,那是不可接受的。

更新 2018.05.03. 我在新 class 中创建了 main 方法,但得到了相同的错误消息。

import org.testng.TestNG;
import org.testng.xml.Parser;
import org.testng.xml.XmlSuite;
import org.xml.sax.SAXException;
import javax.xml.parsers.ParserConfigurationException;
import java.io.IOException;
import java.util.List;

public class LeanFTest {
    public void main() throws IOException, SAXException, ParserConfigurationException {
        TestNG testNG = new TestNG();

        String xmlFileName = "testng.xml";
        List<XmlSuite> suite = (List<XmlSuite>)(new Parser(xmlFileName).parse());
        testNG.setXmlSuites(suite);

        testNG.run();
    }
}

看来您在测试项目(使用 LeanFT TestNG 模板)、java 应用程序、谁知道还有什么应用程序之间有某种组合。

如果您有 main 方法但仍想触发 TestNG 测试,则需要使用 TestNG class。例如

TestNG testNG = new TestNG();
testNG.setTestClasses(WebTestFactory.class);
testNG.run();

您可以在 official docs or in this SO thread

中阅读有关此方法的更多信息

如果您没有 main class,您应该创建一个。 (.jar 文件怎么知道入口点是什么?)。

总而言之,这个错误表明项目类型和项目结构(内容)之间存在冲突


根据您最近的评论:您能告诉我 example/pattern,将 main() 方法放在哪里吗?

  1. 您可以创建一个新的 class 文件,甚至可以使用 LeanFTest
  2. 创建 main 方法。

    无论您在 main 方法中做什么,都会驱动您的整个应用程序。 在您的特定情况下(执行 TestNG 测试),您需要执行以下操作,在您的主要方法中

  3. 创建测试ng实例(TestNG testNG = new TestNG();)

  4. 使用此实例准备测试套件

    (再次)指向上面的 SO 线程,这意味着:

    String xmlFileName = "testng.xml";
    List<XmlSuite> suite = (List <XmlSuite>)(new Parser(xmlFileName).parse());
    testNG.setXmlSuites(suite);
    
  5. 运行套房

    testNG.run();
    

之后,当您创建工件时,指向具有主要方法的 class 并双击 .jar(或从命令行执行)应该启动测试套件.