Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JUnit测试用例的最大覆盖率_Java_Junit - Fatal编程技术网

Java JUnit测试用例的最大覆盖率

Java JUnit测试用例的最大覆盖率,java,junit,Java,Junit,测试应该很好地覆盖此类可以抛出的异常和错误类型,并且应该很好地覆盖CalculatePrimesmoher的构造函数方法中的缺陷语句 需要三个Junit测试用例的方法如下: public CalculatePrimesMother(int numWorkers, int queueLength, int maxPrime, boolean verbose) { this.numWorkers = numWorkers; // Insta

测试应该很好地覆盖此类可以抛出的异常和错误类型,并且应该很好地覆盖CalculatePrimesmoher的构造函数方法中的缺陷语句

需要三个Junit测试用例的方法如下:

public CalculatePrimesMother(int numWorkers, int queueLength, int maxPrime,
            boolean verbose) {

        this.numWorkers = numWorkers;

        // Instantiate 3 queues, for thread-safe communication with workers
        Candidate = new ArrayBlockingQueue<Integer>(queueLength);
        Prime = new ArrayBlockingQueue<Integer>(queueLength);
        Composite = new ArrayBlockingQueue<Integer>(queueLength);

        this.maxPrime = maxPrime;
        this.sqrtMaxPrime = (int) Math.sqrt(maxPrime);
        primeFactors = new int[sqrtMaxPrime];
        this.verbose = verbose;
    }

你有什么保险?在您的ctor中没有if测试,因此一个调用应该可以运行我看到的所有代码

你写的代码太多了。设置、拆卸和测试构造函数方法都是不必要的。移除它们


在其他测试中不需要try/catch块。把那些也拿走。您希望异常触发测试失败。捕捉将隐藏错误。

您的覆盖范围是什么?在您的ctor中没有if测试,因此一个调用应该可以运行我看到的所有代码

你写的代码太多了。设置、拆卸和测试构造函数方法都是不必要的。移除它们


在其他测试中不需要try/catch块。把那些也拿走。您希望异常触发测试失败。捕捉将隐藏错误。

构造函数中没有分支,因此只需调用一次新的CalculatePrimesmour,就可以完全覆盖构造函数方法。您使用什么工具来计算覆盖率?哪些行被声明为未被此工具覆盖?如果您未获得完全覆盖,则必须是因为抛出了异常,并且您正在测试中捕获它。这是你不应该做的事。其思想是让jUnit捕获代码中抛出的所有异常,以便它能够检测测试是否失败。构造函数中没有分支,因此只需调用一次新的CalculatePrimesmour,就可以完全覆盖构造函数方法。您使用什么工具来计算覆盖率?哪些行被声明为未被此工具覆盖?如果您未获得完全覆盖,则必须是因为抛出了异常,并且您正在测试中捕获它。这是你不应该做的事。其思想是让jUnit捕获代码中抛出的所有异常,以便它能够检测测试是否失败。所以,所有可能的错误或异常条件都应该存在。你做到了。我没有看到抛出任何已检查异常。什么使你认为你没有100%的保险?有没有一个工具可以给你一个度量标准,或者只是你想象你遗漏了什么?@user2886707这不是你正在做的。你是在告诉jUnit,如果有异常,他应该忽略它!如果要考虑所有可能的异常,应使用“预期“注释。请正确检查此项,如果您不希望出现异常,您希望被告知出现故障。这就是为什么您没有捕获。@duffymo不,我正在使用工具检查它。您能为给定方法建议可能的测试用例吗?我想检查该方法的所有可能场景。因此,所有可能的错误或异常条件应该在那里。你做到了。我没有看到被抛出的检查异常。什么让你认为你没有100%的覆盖率?有没有工具给你一个度量,或者只是你想象你遗漏了什么?@user2886707这不是你正在做的。你在告诉jUnit,如果有异常,他应该忽略它!如果你想考虑到所有可能的异常,您应该使用“预期的”注释。正确地检查这一点,如果您不预期异常,您希望被告知存在故障。这就是为什么您没有捕获。@duffymo不,我正在使用工具检查它。您能为给定方法建议可能的测试用例吗
public class CalculatePrimesMotherTest extends TestCase {

    public CalculatePrimesMotherTest(String name) {
        super(name);
    }

    private CalculatePrimesMother testMother;

    @Test
    public final void testCalculatePrimesMotherNegativequeueLength() {
        try {
            testMother = new CalculatePrimesMother(4, -12, 908, false);
        } catch (Exception e) {
            e.printStackTrace();

        }

    }

    @Test
    public final void testCalculatePrimesMotherMinusOne() {
        try {
            testMother = new CalculatePrimesMother(8, 12, 0, true);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

}