jUnit测试中的访问方法变量

时间:2015-01-31 00:18:06

标签: java junit

如何在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
    }
}

2 个答案:

答案 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)

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