首页 > 解决方案 > 使用“Test Runner for Java”扩展运行 VS Code(无 Maven)测试

问题描述

我正在尝试使用没有 Maven 的 Visual Studio 代码制作 JUnit5 的最小工作示例。原因是我正在尝试为一年级学生做一个快速演示,而我没有时间解释 Maven(它将成为以后课程的主题)。

我的 VS Code 工作区具有这种结构(我在 Linux 上,所以正斜杠是正常的):

非常基本的项目结构

settings.json 文件包含:

{
    "java.project.referencedLibraries": [
    "demojunit/junit-platform-console-standalone-1.8.1.jar"
    ]
}

DemoJUnit.java 包含:

package demojunit;

import java.util.Scanner;

public class DemoJUnit {
    public static void main(String[] args) {
        Scanner keyboard = new Scanner(System.in);

        int integer = -1;
        do {
            System.out.print("Enter an integer between 1 and 20 : ");
            if (keyboard.hasNextInt())
            integer = keyboard.nextInt();
                keyboard.nextLine();
        } while ((integer < 1) || (integer > 20));

        keyboard.close();

        long result = computeFactorial(integer);
        System.out.println("The factorial " + integer + "! gives " + result);
    }

    public static long computeFactorial(int number) {
        if (number < 1)
            return -1;
        if (number > 20)
            return -2;

        long factorial = 1;
        for (int i = 2; i <= number; i++) {
            factorial = factorial * i;
        }

        return factorial;
    }
}

DemoJUnitTest.java 包含:

package demojunit;

import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;

public class DemoJUnitTest {
    @Test
    public static void computeFactorial_CleanTest() {
        long expected_value = 120;
        long real_value = DemoJUnit.computeFactorial(5);
        Assertions.assertEquals(expected_value, real_value);
    }

    @Test public static void computeFactorial_DirtyTest() {
        long expected_value = -1;
        long real_value = DemoJUnit.computeFactorial(0);
        Assertions.assertEquals(expected_value, real_value);
    }
}

settings.json 似乎可以工作,因为导入和 @Test 在 VS Code 中没有标记为错误。

正如您在文件夹图像中看到的,我下载了最新的 JUnit5 jar 文件,它在从命令行运行时可以工作:

从控制台运行 junit 的输出

但是,从命令行运行并不方便,所以我安装了“Test Runner for Java”扩展。

问题是在运行测试时,有些东西失败了,我没有任何错误消息,也没有任何迹象表明出了什么问题。我将扩展程序的设置更改为,verbose但在终端、调试控制台或其他任何地方仍然没有收到错误消息。

我得到的是:

扩展显示 0/0 测试失败

知道为什么扩展失败(并且没有给出任何关于失败原因的指示)吗?

标签: visual-studio-codejunit5

解决方案


推荐阅读