单元测试时我应该使用哪些数据/参数来源?

clu*_*ein -1 java junit unit-testing

我正在一个大型系统中执行单元测试,该系统由数百个不同的.java文件组成,这些文件都构成了后端.

在我的单元测试中,我应该从其他方法传递变量(在我的测试方法中调用方法),还是使用在测试方法中创建/声明的值进行测试?

我想我应该专门为测试方法提出值,因为这些是单元测试,我试图单独测试每个方法,但我不确定这一点.我是否需要将获取所述数据的功能完全复制到单元测试中?

Car*_*ter 5

一般来说,您应该在测试中创建值,从而更好地隔离被测系统.还有其他类型的测试,如@James所提到的,您可以使用junit进行集成测试以及单元测试.但是junit测试的核心是单元测试,适当的单元测试隔离了被测系统.

更新以回应您的评论:

例如,如果您有A类和B类:

public class A {
  private B b = new B();

  public void callB() {
    b.process(17);
    b.process(22);
  }
}

public class B {
  public void process(int n) {
    // do stuff with n
  }
}
Run Code Online (Sandbox Code Playgroud)

您的测试类B可以简单地初始化自己的B和调用b.process(17),并b.process(22)没有任何参照,也需要继承A.为了测试一个孤立的B,你将需要某种嘲讽机制,这将有一个模拟替代乙.这样的测试只会使用模拟来验证是否b.process已经使用17和22进行调用,而不必担心这些调用后发生的事情.