0

I have a class which exposes a set of apis as below

class MyDataProcessor{    
    private int M;
    private double[] data;

    public MyDataProcessor(int N,int M){
        this.M = M;
        this.data = new double[M];
        for(int i=0;i<M;i++){
            int randomX = //get a random value
            double v = processValue(randomX);
            this.data[i] = v;
        }
    private static double processValue(int randomX){
         //do some work on randomX and return a double value
    }

    private double mean(double[] a){
        double meanValue = //find mean of a
        return meanValue;
    }

    private double stddev(double[] a){
        double stdDevValue = //find stddev of a
        return stdDevValue;
    }

    public double lowerBoundConf(){
        double mean = mean(this.data);
        double sd = stddev(this.data);
        double lb = mean + (1.96*stddev)/Math.sqrt(this.M);
        return lb;
    }
}

Here,I have to unit test the method lowerBoundConf.I cannot provide a double[] array to this method(that would have made it simple).The array has to come from inside the constructor.I cannot figure out how I can write tests for this.Can someone help?

4

2 回答 2

2

要测试您的类的任何功能,您需要访问数据数组。使受保护的字段包最终以针对数据值测试方法。

但是为什么要测试未知随机数据的计算呢?这是无用的(作业?),也只是随机结果。

于 2013-09-03T05:34:54.070 回答
1

处理随机问题的测试方法总是很困难。

但是你仍然可以测试整个班级。当您在此处提供特定参数时,您已经期望从该方法中得到一些东西,这就是您的测试应该是什么样子。

当您不知道返回的具体值时,请测试一些相关信息,例如 min/max。

另一种选择是使用 Mock 框架,例如 Mockito,这在您的情况下非常困难,因为除了一个方法之外,所有方法都是私有的

于 2013-09-03T05:06:57.630 回答