在Junit中测试对象数组,但导入无法解析

时间:2015-07-02 06:40:51

标签: junit junit4

我正在尝试测试我的insert功能是否有效。但是Eclipse给了我一个导入错误。我的建筑路径中有junit4。 JunitTest

这是我的解决方案类

public class Solution {

    public class Interval {
        int start;
        int end;
        Interval() { start = 0; end = 0; };
        Interval(int s, int e) { start = s; end = e; };
    }

    public static ArrayList<Interval> insert(ArrayList<Interval> intervals, Interval newInterval) {
        // more code

这是我的SolutionTest类

import Solution.Interval; // Error: The import Solution can't be resolved

public class SolutionTest {
    @Before
    public void setUp() {
        ArrayList<Interval> er = new ArrayList<Interval>(); //imoprt Interval
        System.out.println("Start");
    }

3 个答案:

答案 0 :(得分:1)

我怀疑如果您将代码放在默认包以外的软件包中,问题就会消失。编译器可能认为Solution是一个包,并且在Interval包中找不到名为Solution的类或接口。

此外,如果您希望能够在没有Interval的情况下创建Solution从内部类更改Interval到嵌套类

package solution;

public class Solution {

    public static class Interval {
        private final int start;
        private final int end;

        public Interval() {
          this(0, 0);
        }

        public Interval(int start, int end) {
          this.start = start;
          this.end = end;
        }

        ...
    }

    public static ArrayList<Interval> insert(List<Interval> intervals, Interval newInterval) {
      ...
    }
}

上面的类将在“src / solution / Solution.java”

以下是测试:

package solution;

import solution.Solution.Interval;

@RunWith(JUnit4.class)
public class SolutionTest {
  private final List<Interval> emptyIntervalList = new ArrayList<Interval>();

  ...
}

当然,您可以将Interval作为顶级课程,但如果您这样做,我强烈建议您将其放在另一个文件中(名为Interval.java)。

我还建议使用the standard Maven directory layout

答案 1 :(得分:0)

删除import语句 // import Solution.Interval;

并尝试以下

ArrayList er = new ArrayList();

答案 2 :(得分:0)

解决了我自己的问题。我将Interval类分成了自己的类。这解决了这个问题。

所以而不是:

public class Solution {

    private static class Interval {
        int start;
        int end;
        Interval() { start = 0; end = 0; };
        Interval(int s, int e) { start = s; end = e; };
    }

我这样做了:

public class Solution {
    // some code here
}

class Interval {
    int start;
    int end;
    Interval() { start = 0; end = 0; };
    Interval(int s, int e) { start = s; end = e; };
}

我认为问题是Interval是一个嵌套类,你无法在Junit中直接测试嵌套类。但如果有人知道更详细的解释,请分享。