JUnit测试用例的最大覆盖范围

时间:2013-10-16 19:21:09

标签: java junit

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

需要三个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;
    }

我尝试并创建了一些测试用例,但是没有人能够完全覆盖,任何人都可以帮助我吗?

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

}

1 个答案:

答案 0 :(得分:1)

你得到什么报道?如果你的ctor没有测试,那么一次调用就应该运用我看到的所有代码。

你写的代码太多了。 setUp和tearDown以及测试构造函数方法都是不必要的。删除它们。

在其他测试中,您不需要try / catch块。也删除它们。您希望异常触发测试失败。捕获将隐藏错误。