【问题标题】:Testing in Maven Project: Can't find code to test [closed]在 Maven 项目中进行测试:找不到要测试的代码 [关闭]
【发布时间】:2016-01-05 00:42:12
【问题描述】:

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

今天,我创建了一个空的 Maven 项目(我没有使用原型。)并且该结构似乎希望我将测试放在一个特殊的 test/java 文件夹中。根据this post 的评论,“src/test 中的代码可以看到 src/main,但是 src/main 中的代码不能针对 src/test 中的代码使用/查看/编译”,但我没有找到就是这样。我的 IDE 在对我的 main/java 文件中的类的引用下有红色的波浪线,并显示“无法解析符号‘用户’。”我想知道我的测试文件中是否遗漏了一些东西:

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());
    }

}

【问题讨论】:

    标签: java maven intellij-idea junit


    【解决方案1】:

    确实发生了,当我写我的问题时,我找到了解决方案。虚张声势!

    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());
        }
    }
    

    在我以前的设置中,这不是必需的。我肯定会感谢可以提供更好建议或替代方法的人。 :-)

    【讨论】:

    • 如果要使用短类名,您总是需要导入您正在工作的包之外的类。 More info here.
    • 啊!是的,在我将它包含在同一个包中之前。当我从我的另一个项目中复制它时,IntelliJ 似乎从测试文件的第一行删除了包名称,我没有意识到我不希望我的测试文件成为我的 包的一部分。
    • 如果您喜欢您的回答,您可以接受。 SO 将显示问题已回答。
    • 大多数开发人员将测试与被测类放在同一个包中。这避免了 import 语句并且还有其他一些好处(例如访问包私有字段和方法)
    • 您在src/test/java 中拥有与src/main/java 相同的包/目录,Maven 将测试与生产代码分开。你可以看看 GitHub 上的一些 Maven 项目。例如。 github.com/stefanbirkner/system-rules
    猜你喜欢
    • 1970-01-01
    • 2019-03-19
    • 1970-01-01
    • 2011-05-09
    • 2011-09-04
    相关资源
    最近更新 更多