gpt4 book ai didi

java - 如何从命令行(没有 Maven/Gradle)启动 JUnit 5(平台)?

转载 作者:搜寻专家 更新时间:2023-10-31 08:18:44 25 4
gpt4 key购买 nike

我想从命令行运行一个包含 JUnit 5 测试的类。不幸的是,我有一些外部依赖项阻止我使用 Maven、Gradle 或其他构建系统。

在 JUnit 4 中,我可以这样完成

java .:"lib/*" org.junit.runner.JUnitCore TestClass

是否有 JUnit 5 的等效项?我只是想知道测试是否像在 IntelliJ 中运行时一样成功。

TestClass.java

import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;

import java.util.ArrayList;
import java.util.Collections;

import static org.junit.jupiter.api.Assertions.*;

public class TestClass {

private static ArrayList<Student> students;
private static ArrayList<Student> inAgeOrderStudents;
private static ArrayList<Student> inNameOrderStudents;

@BeforeAll
static void setUp(){
initializeStudents();
initSortedAgeStudents();
initSortedNameStudents();
}

@BeforeEach
void reloadStudents() {
Collections.shuffle(students);
}

static void initializeStudents(){
students = new ArrayList<Student>();

students.add(new Student(18, "Tim"));
students.add(new Student(18, "Tim"));
students.add(new Student(16, "Jean"));
students.add(new Student(14, "Lin"));
students.add(new Student(19, "Sam"));
}

static void initSortedAgeStudents(){
inAgeOrderStudents = new ArrayList<Student>();
inAgeOrderStudents.add(new Student(14, "Lin"));
inAgeOrderStudents.add(new Student(16, "Jean"));
inAgeOrderStudents.add(new Student(18, "Tim"));
inAgeOrderStudents.add(new Student(18, "Tim"));
inAgeOrderStudents.add(new Student(19, "Sam"));
}

static void initSortedNameStudents(){
inNameOrderStudents = new ArrayList<Student>();
inNameOrderStudents.add(new Student(16, "Jean"));
inNameOrderStudents.add(new Student(14, "Lin"));
inNameOrderStudents.add(new Student(19, "Sam"));
inNameOrderStudents.add(new Student(18, "Tim"));
inNameOrderStudents.add(new Student(18, "Tim"));
}



@Test
void testMergeSort() {
assertNotEquals(students, inAgeOrderStudents);
StudentSortSearch.mergesort(students,StudentSortSearch.SortSearchCriteria.AGE);
assertEquals(14,students.get(0).getAge());
assertEquals(19,students.get(4).getAge());
assertEquals(students, inAgeOrderStudents);

assertEquals(true,students.equals(inAgeOrderStudents));
}

@Test
void testQuickSort() {
StudentSortSearch.quickSort(students,StudentSortSearch.SortSearchCriteria.NAME);
assertEquals("Jean",students.get(0).getName());
assertEquals("Tim",students.get(4).getName());

assertEquals(students, inNameOrderStudents);
}

@Test
void testBinarySearch() {
StudentSortSearch searcher = new StudentSortSearch();
ArrayList<Student> searchResults = searcher.binarySearch(students, 18);
assertEquals(2, searchResults.size());
assertEquals(18,searchResults.get(1).getAge());
assertEquals(18,searchResults.get(0).getAge());

searchResults = searcher.binarySearch(students, "Lin");
assertEquals(1, searchResults.size());
assertEquals(14,searchResults.get(0).getAge());
}
}

最佳答案

当然,使用 ConsoleLauncher .

The ConsoleLauncher is a command-line Java application that lets you launch the JUnit Platform from the console. For example, it can be used to run JUnit Vintage and JUnit Jupiter tests and print test execution results to the console.

An executable *junit-platform-console-standalone-<version>.jar* with all dependencies included is published in the central Maven repository under the junit-platform-console-standalone directory. You can run the standalone ConsoleLauncher as shown below.

java -jar junit-platform-console-standalone-<version>.jar <Options>

有关选项的详细信息,请咨询 https://junit.org/junit5/docs/current/user-guide/#running-tests-console-launcher请。

根据您的示例量身定制并使用 JUnit 平台版本 1.3.1 ,命令可能如下所示:

$ mkdir out
$ javac -d out Student.java StudentSortSearch.java
$ javac -d out -cp out:junit-platform-console-standalone-1.3.1.jar TestClass.java
$ java -jar junit-platform-console-standalone-1.3.1.jar --class-path out --scan-class-path

├─ JUnit Jupiter ✔
│ └─ TestClass ✔
│ └─ test() ✔
└─ JUnit Vintage ✔

Test run finished after 67 ms
...

关于java - 如何从命令行(没有 Maven/Gradle)启动 JUnit 5(平台)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52373469/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com