【问题标题】:Where to put stub classes in Maven projects在 Maven 项目中放置存根类的位置
【发布时间】:2016-12-06 05:45:24
【问题描述】:

我有一个 Maven 项目,其目录布局如下:

    .
└── src    
     ├── main
     │    └── ...
     └── test
           └── java
                 └── com.foo
                      ├── stubs
                      │   └── JsonSnippets.java
                      ├── bar
                      │   └── BarTest.java
                      └── ... further tests

JsonSnippets 类如下所示:

package com.foo.stubs;

public class JsonSnippets {

    public final static String SNIPPET_A = "{...}";

}

BarTest 类中,我想使用JsonSnippets 类,因此我有

package com.foo.bar;

import com.foo.stubs.JsonSnippets;

// ...

@Test
public void testWithJsonSnippets() {
    String json = JsonSnippets.SNIPPET_A;
    // ...
}

当我现在运行 mvn test 时,我收到以下错误消息:

cannot find symbol
[ERROR] symbol:   class JsonSnippets
[ERROR] location: package com.foo.bar

备注一切正常,当我将JsonSnippets 类放入src/main/... 包/目录时。

【问题讨论】:

  • JSonSnippets 类是公开的吗?
  • 是的 - 它被宣布为公开 - 我将把它添加到我的问题中,谢谢!
  • 你能不能也追加 JsonSnippets 类。
  • 你能检查 JsonSnippets 类是否在你的类路径(目标/测试类)中吗?
  • @uniknow - 是的 - JsonSnippets 现在编译为 test-classes/.../stups/JsonSnippets.class 但我仍然无法在我的测试类中导入/使用它(至少在 IntelliJ 中)。

标签: java maven testing junit stubs


【解决方案1】:

检查您是否正确导入了 JsonSnippet 类。

检查 JsonSnippet 类是否定义了公共构造函数。

【讨论】:

  • 我猜import com.foo.stubs.JsonSnippets; 是该类的正确导入,对于仅包含静态成员的类,我不需要公共构造函数 - 对吗?
【解决方案2】:

问题是项目目录中的 Maven 配置损坏。在我删除了所有与项目无关的缓存文件并“从头开始”创建项目(使用完全相同的源)后,一切都按照我的问题中的描述进行。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-10-23
    • 1970-01-01
    • 2011-09-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-23
    相关资源
    最近更新 更多