我创建了一个E2E测试项目,最初,所有的java类都在'src/test/java“中,但现在我想把所有不包含测试的文件移到”src/main/java“文件夹中,问题就出在我做了之后:
我不能将包从”src/test/java“导入到”src/main/java“(但可以做相反的操作)。
清理了项目,并尝试通过IDE和maven运行,但它并没有改变结果。
我做错了什么?
您在这里混淆了两个不同的概念,源文件夹和包。
源文件夹就是包含源的文件夹。在大多数现代项目中,您会发现两个这样的源代码文件夹,一个用于生产代码,另一个用于测试代码。在您的示例中(标准的Maven目录布局,分别是src/main/java和src/test/java)。
包是组织类的一种方式,这通常也反映在您的源代码中。按照惯例,测试和生产代码使用相同的包,例如,生产类com.mypackage.foo通常由名为com.mypackage.fooTest的类测试。按照惯例,这些包层次结构还映射到源代码中的目录层次结构。注意:虽然在99.99999%的情况下,出于理智的考虑,您应该遵守此约定,但实际上这并不是一个要求。您可以组织您的软件包,而不依赖于文件系统(在源端)。
src/main/java/com/mycompany/mypackage/SomeClass.java
src/test/java/com/mycompany/mypackage/SomeClassTest.java
因此production和test类共享一个包,但位于不同的源文件夹中。这个设置非常强大,因为它允许您的构建工具只将生产代码导出到最终输出,而让您的测试代码在包级别上访问它所测试的代码。测试和生产代码是独立编译的,生产代码不知道测试代码,这是它应该做的。
在您的情况下,似乎在测试文件夹中有生产代码。要改变这一点,将代码移动到另一个包并不是解决方案。相反,您希望将代码移动到相同的包中,但在production文件夹中。如果您正在使用IntelliJ,移动对话框允许您选择一个不同的源根,这正是您想要的,其他IDE将通过类似的功能。
业务逻辑类:测试用例类: 我尝试过清理,将testResources目录放在POM中。我不想在类路径中添加classes文件夹。请指教。
我有两个给定接口的实现,都用@Component注释。 src/main中有一个实现- 我在src/test中有一个测试类ABCTest.java,用 @Runwith(SpringRunner.class)、@SpringBoottest、@ContextConfigation、@ComponentScan、@EnableAutoConfigation 我希望这个ABCTest.java在运行测
我有一个Java/Spring-Boot类 问题:当我在src/java/main中运行类MyApplication时,一切都很酷。但是:当我在src/java/test中运行这个类时,它会失败 附注:我有spring-boot-starter-web依赖项。通过@springboottest,我得到了以下信息:
我从这个站点上前面的回答中了解到,对于Maven构建: 将部署到生产中,而将不部署到生产中。 包含主应用程序,而将包含测试主应用程序的代码 现在我的问题是,在编写测试框架时,哪种方法更好/更差: 测试框架本身将是主应用程序-因此它将驻留在?上 测试框架将仅用于测试主应用程序-因此将驻留在?上 但不知何故,我无法想象一个测试框架被部署到生产中。 方法2似乎是正确的,但是如果主要目的是编写一个测试框架
如果有一种方法可以在javadoc中放置指向驻留在src/main/资源或src/test/资源中的标准资源文件的链接,以便另一个编码器可以快速导航到IntelliJ中的资源文件(在这种情况下是JSON文件),我会发现它非常有用。 这些文件在单元测试中使用,需要在模式更改时经常修改。 这里的答案是Javadoc中指向文本文件(资源)的链接没有帮助,因为绝对路径太脆弱。 有没有和@用资源看一样的方法
我有一个目录结构如下的maven模块,我想在中获取的路径 我使用进行了尝试,但它给出了一个空值。 无法获取资源的路径