JUnit 内部测试 类

JUnit testing internal classes

我的大学作业要求我将所有代码放在一个 *.java 文件中。我目前正在处理的问题是,我在应用程序中编写了一些支持 classes,因此至少有一些功能是分开的。问题是,其中一些支持 classes 非常简单,但具有很多功能。

为了让我的问题更清楚,这里是我的主要 class.

的文件结构
public class Assignment {
  // ...
  protected class UtilClass1 {
    // ...
  }
  protected class UtilClass2 {
    // ...
  }
  // ...
}

我现在的问题是我想为这些实用程序编写 JUnit 测试用例 classes,因为我必须手动测试的各种输入非常耗时,而我真正需要的只是测试实用程序 classes.

我已经设法编写了一个简单的测试来测试这一行代码中的一些功能。像这样:

  @Before
  public void initAssignment() {
    app = new Assignment();
  }

  @Test
  public void testNumberCreate() {
    assertTrue(app.new Number(new int[] {1,2,3,4,5}).toString().equals("12345"));
  }

在这种特殊情况下,Number 是我要测试的支持 classes 之一。我遇到的一个问题是我不知道如何将内部数据类型存储在变量中,因为大多数测试根本不可能是一行代码。

我知道我可以通过使所有内部 classes 静态化来解决这个问题,但我想知道是否有另一种方法可以在不使它们静态化的情况下实现这一点。另外,我希望能有任何更简洁的方法来测试这些 classes,因为这非常混乱。

这对我有用:

public class Foo{

    protected class Bar{}

    public static void main(String[] args){
        Foo.Bar bar = (new Foo()).new Bar();
    }
}

没有编译错误。然后,您将能够访问 bar 上的任何可用方法。