Java Maven项目中的测试:Can';找不到要测试的代码

Java Maven项目中的测试:Can';找不到要测试的代码,java,maven,intellij-idea,junit,Java,Maven,Intellij Idea,Junit,当我在IntelliJ中使用一个简单的命令行java应用程序时,我可以将测试存储在与其余代码相同的文件夹中,并使用内置工具运行JUnit测试。将测试与其他代码放在同一个文件夹中可能不是最佳做法,但我只是使用测试来学习Java 今天,我创建了一个空的Maven项目(我没有使用原型),该结构似乎希望我将测试放在一个特殊的test/java文件夹中。根据关于“src/test中的代码可以看到src/main,但是src/main中的代码不能针对src/test中的代码使用/see/compile”的评

当我在IntelliJ中使用一个简单的命令行java应用程序时,我可以将测试存储在与其余代码相同的文件夹中,并使用内置工具运行JUnit测试。将测试与其他代码放在同一个文件夹中可能不是最佳做法,但我只是使用测试来学习Java

今天,我创建了一个空的Maven项目(我没有使用原型),该结构似乎希望我将测试放在一个特殊的test/java文件夹中。根据关于“src/test中的代码可以看到src/main,但是src/main中的代码不能针对src/test中的代码使用/see/compile”的评论,但我没有发现这种情况。我的IDE在对主/java文件中的类的引用下有红色的曲线,上面写着“无法解析符号‘User’”。我想知道我的测试文件是否遗漏了一些内容:

import org.junit.Before;
import org.junit.Test;

import static org.junit.Assert.assertEquals;

public class UserTest {

    private User benny;

    @Before
    public void setUp() {
        benny = new User("benny", "long", 46, 'M');
    }

    @Test
    public void getFirstNameReturnsName() {
        assertEquals("We should receive the correct name", "benny", benny.getFirstName());
    }

}

事实上,当我写问题的时候,我找到了答案。脱口而出

import gabrielkunkel.User; // <-- I had to import the class
import org.junit.Before;
import org.junit.Test;

import static org.junit.Assert.assertEquals;

public class UserTest {

    private User benny;

    @Before
    public void setUp() {
        benny = new User("benny", "long", 46, 'M');
    }


    @Test
    public void getFirstNameReturnsName() {
        assertEquals("We should receive the correct name", "benny", benny.getFirstName());
    }
}

导入gabrielkunkel.User;//如果要使用短类名,则始终需要导入正在工作的包之外的类。啊!!是的,在我把它放在同一个包裹里之前。当我从另一个项目复制测试文件时,IntelliJ似乎从测试文件的第一行删除了包名,我没有意识到我不想让我的测试文件成为我包的一部分。如果你喜欢你的答案,你可以接受它。大多数开发人员将测试与被测试的类放在同一个包中。这避免了import语句,还有其他一些好处(例如访问包私有字段和方法)。您在
src/test/java
中拥有与
src/main/java
中相同的包/目录,Maven将测试与生产代码分开。您可以看看GitHub上的一些Maven项目。例如。