jUnit测试中的访问方法变量

Access method variable in jUnit test

如何在 jUnit 测试中使用下面方法中的 2 个变量,但 Eclipse 告诉我无法访问此变量。我怎样才能使它以任何方式访问?或者我需要在其他 class?

中定义测试
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
    }
}

尝试真正将您的逻辑提取(和抽象)到方法中。因此,这些方法最终将具有参数和结果,从而可以轻松地对每个方法(使用不同的参数)进行单元测试。

单元测试的想法是你有一个方法,它接受给定的参数并且应该产生一些预期的输出。重写您的程序以使其以这种方式工作,例如:

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);
}