Я хочу запустить класс, содержащий тесты 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
ConsoleLauncheris 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 Platform версии 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
...
Как запустить Test Runner с помощью Maven?