如何在jUnit测试中使用下面方法中的2变量,但Eclipse告诉我无法访问此变量。如何以任何方式使其可访问?或者我需要在其他类中定义测试?
import org.junit.Assert;
import org.junit.*;
public class Sequence {
public void MissingNumber() {
int[] arr = {1, 2, 3, 5, 6, 7, 8};
int length = arr.length;
int indexes = 8;
int values = 0;
for (int i = 0; i < length; i++) {
indexes += i+1;
values += arr[i];
int result = indexes - values;
System.out.println("Indexes:" + indexes);
System.out.println("Values:" + values);
System.out.println("Missing number is: "+ result);
}
}
@Test
public void testCase1() {
Assert.assertEquals("4", result); //need to use result
}
@Test
public void testCase2() {
Assert.assertEquals("10", values); //need to use values
}
}
答案 0 :(得分:3)
单元测试的想法是你有一个方法,它接受给定的参数,并应产生一些预期的输出。重写您的程序以使其以这种方式工作,例如:
public int missingNumber(int[] arr) {
int length = arr.length;
int indexes = 8;
int values = 0;
for (int i = 0; i < length; i++) {
indexes += i + 1;
values += arr[i];
}
return indexes - values;
}
@Test
public void testResultFor_1_2_3_5_6_7_8() {
int result = missingNumber(new int[]{1, 2, 3, 5, 6, 7, 8});
Assert.assertEquals(4, result);
}
答案 1 :(得分:1)
尝试将您的逻辑真正提取(并抽象)为方法。因此,这些方法最终会产生参数和结果,从而可以轻松地对每个方法进行单元测试(使用不同的参数)。