【问题标题】:IntelliJ-IDEA Gradle: trouble getting started (following JetBrain's tutorial)IntelliJ-IDEA Gradle:入门困难(按照 JetBrain 的教程)
【发布时间】:2021-12-07 18:10:09
【问题描述】:

我正在 IntelliJ-IDEA 中做 JetBrains 的 Gradle 教程,并且在完成“Gradle 入门第 3 步。使用 Gradle 运行应用程序”之后,我被困在 Step 4。 教程说“点击编辑器左侧的 ▶”;没看到▶。相反,文件 (FizzBuzzTest.java) 有 11 个错误和 16 个警告,以“Cannot resolve symbol 'Assert'”开头。文件名带有红色波浪下划线。所以我尝试从 Gradle 的 test 任务中运行测试;这也返回了一条错误消息:“错误:包 org.junit 不存在”。

这是我FizzBuzz\src\test\java\com.gradle.tutorial\FizzBuzzTest.java的内容:

package com.gradle.tutorial;
import org.junit.Assert;
import org.junit.Test;

public class FizzBuzzTest {
    @Test
    public void FizzBuzzNormalNumbers() {

        FizzBuzzProcessor fb = new FizzBuzzProcessor();
        Assert.assertEquals("1", fb.convert(1));
        Assert.assertEquals("2", fb.convert(2));
    }

    @Test
    public void FizzBuzzThreeNumbers() {

        FizzBuzzProcessor fb = new FizzBuzzProcessor();
        Assert.assertEquals("Fizz", fb.convert(3));
    }

    @Test
    public void FizzBuzzFiveNumbers() {

        FizzBuzzProcessor fb = new FizzBuzzProcessor();
        Assert.assertEquals("Buzz", fb.convert(5));
    }

    @Test
    public void FizzBuzzThreeAndFiveNumbers() {

        FizzBuzzProcessor fb = new FizzBuzzProcessor();
        Assert.assertEquals("Buzz", fb.convert(5));
    }
}

我在本教程中手动创建的唯一其他文件是...

FizzBuzz\src\main\java\com.gradle.tutorial\FizzBuzzProcessor.java

package com.gradle.tutorial;

public class FizzBuzzProcessor {
    public static void main(String[] args) {
        for (int i = 1; i <= 100; i++) {
            System.out.println(convert(i));
        }
    }

    public static String convert(int fizzBuzz) {
        if (fizzBuzz % 15 == 0) {
            return "FizzBuzz";
        }
        if (fizzBuzz % 3 == 0) {
            return "Fizz";
        }
        if (fizzBuzz % 5 == 0) {
            return "Buzz";
        }
        return String.valueOf(fizzBuzz);
    }
}

FizzBuzz\build.gradle

plugins {
    id 'java'
}

group 'org.example'
version '1.0-SNAPSHOT'

repositories {
    mavenCentral()
}

dependencies {
    testImplementation 'org.junit.jupiter:junit-jupiter-api:5.7.2'
    testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.7.2'
}

test {
    useJUnitPlatform()
}

这些都是教程中的(我只是复制粘贴它们。)

因为FizzBuzzTest.java没有▶,我无法运行测试来完成步骤4。我该怎么办?

(当按照“创建测试类”步骤创建FizzBuzzTest.java时,对话框自动选择JUnit5而不是教程建议的JUnit4。我试过JUnit4,但对话框说不可能找到了,所以我改回JUnit5。)

【问题讨论】:

  • 阅读this thread,我认为我的问题是由build.gradle 中如何声明“junit”的依赖关系引起的。按照那里的一些答案,我尝试了junit:junit:5.7.2 的格式,但它不起作用。此外,repositoriesjcenter() 会被删除,并带有已弃用的消息。所以我仍然没有解决方案,我无法运行测试类。
  • 可以把项目上传到uploads.jetbrains.com查看吗?
  • 您是否尝试过 Gradle 工具窗口中的 Reload 操作 - 是否成功完成?

标签: gradle intellij-idea


【解决方案1】:

创建项目时会自动创建build.gradle文件,默认包含一个junit依赖。

您无需添加任何其他内容。 由于本教程基于 JUnit4,请在我们更新教程时考虑将 JUnit5 降级为 JUnit4。

【讨论】:

    【解决方案2】:

    我们更新了文档,现在source of the project test class 将使用 JUnit 5 类,因为最新的 IDE 版本默认使用 JUnit 5 版本作为依赖项:

    package com.gradle.tutorial;
    
    import org.junit.jupiter.api.Assertions;
    import org.junit.jupiter.api.Test;
    
    import static org.junit.jupiter.api.Assertions.*;
    
    public class FizzBuzzTest {
        @Test
        public void FizzBuzzNormalNumbers() {
    
            FizzBuzzProcessor fb = new FizzBuzzProcessor();
            Assertions.assertEquals("1", fb.convert(1));
            Assertions.assertEquals("2", fb.convert(2));
        }
    
        @Test
        public void FizzBuzzThreeNumbers() {
    
            FizzBuzzProcessor fb = new FizzBuzzProcessor();
            Assertions.assertEquals("Fizz", fb.convert(3));
        }
    
        @Test
        public void FizzBuzzFiveNumbers() {
    
            FizzBuzzProcessor fb = new FizzBuzzProcessor();
            Assertions.assertEquals("Buzz", fb.convert(5));
        }
    
        @Test
        public void FizzBuzzThreeAndFiveNumbers() {
    
            FizzBuzzProcessor fb = new FizzBuzzProcessor();
            Assertions.assertEquals("Buzz", fb.convert(5));
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2012-12-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多