【问题标题】:How to run JUnit Test Classes in Java Main Application using Maven and Eclipse如何使用 Maven 和 Eclipse 在 Java 主应用程序中运行 JUnit 测试类
【发布时间】:2018-07-26 12:58:29
【问题描述】:

我想自动化我的 JUnit 测试。对于我的测试,我使用 Maven 和其他框架,例如 RESTassured 等。

如果我通过 Eclipse 正常启动这些测试,它们就会起作用。现在我想创建一个 Java 应用程序,以便可以通过控制台自动处理 Main 类中的测试类。

想法是创建jar文件,这样测试就可以毫不费力地进行。

为此,我设置了以下主类和测试类:

主类:

package com.openidm.ui;

import java.util.Scanner;

import org.junit.internal.TextListener;
import org.junit.runner.JUnitCore;
import org.junit.runner.Result;

import com.openidm.firsttest.FirstTest;

public class UserInterFace {

static Scanner scanner;

/**
 * @param args
 * @throws IOException
 */
public static void main(String[] args) {

    JUnitCore junitCore = new JUnitCore();

    scanner = new Scanner(System.in);
    int input = 0;

    while (input != 100) {
        System.out.println("\n\n          Test Menu");
        System.out.println("--------------------------------------");
        System.out.println("1 - Testnumber 1");
        System.out.println("2 - Testnumber 2");
        System.out.print("\nSelect a Menu Option: ");


        input = Integer.parseInt(scanner.next()); 

        switch (input) {
        case 1:
            junitCore.addListener(new TextListener(System.out));
            Result result = junitCore.run(FirstTest.class);
            System.out.println(result);
            break;
        case 2:
            System.out.println("Testnumber 2");
            break;
        case 100:
            break;
        default:
            System.out.println("Invalid Input");

        }
    }
}

}

测试类:

package com.openidm.firsttest;

import org.junit.Test;

import com.openidm.testbases.TestBase;

import io.restassured.RestAssured;

public class FirstTest extends TestBase {

/**
 * Get All User IDs
 */
@Test
public void Test001() {

    System.out.println("--------------------All User IDs---------------");
    RestAssured.given()
        .spec(requestSpec)
        .queryParam("_queryId", "query-all-ids")
        .when()
        .get("/user")
        .body()
        .prettyPrint();

    RestAssured.given()
        .spec(requestSpec)
        .queryParam("_queryId", "query-all-ids")
        .when().get("/user")
        .then()
        .statusCode(200);
}

如果我现在启动 Java 应用程序,我会收到以下错误消息:

Exception in thread "main" java.lang.NoClassDefFoundError: 
com/openidm/firsttest/FirstTest
     at com.openidm.ui.UserInterFace.main(UserInterFace.java:39)
Caused by: java.lang.ClassNotFoundException: com.openidm.firsttest.FirstTest
     at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
     at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
     at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349)
     at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
     ... 1 more

谁能帮帮我

【问题讨论】:

  • 您的问题与另一个stackoverflow.com/questions/24943839/…有关
  • 您已经在使用 Maven。 Maven 提供了在构建过程中自动执行所有测试的工具
  • 您能否添加一些信息:1)您的项目的文件夹结构,2)您的 pom.xml
  • @Ivan 问题是创建一个简单的菜单。用它来导航不同的测试用例

标签: java eclipse maven junit


【解决方案1】:

感谢您的快速回复。 我通过将 Main 类移动到测试包解决了这个问题。

但是,问题仍然是为什么我不能外包 Main 类?

Folder Structure

【讨论】:

    猜你喜欢
    • 2011-07-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-07
    • 1970-01-01
    相关资源
    最近更新 更多