1

测试应该很好地覆盖此类可以抛出的异常和错误的类型,并且应该很好地覆盖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();
        }
    }

}
4

1 回答 1

1

你得到什么覆盖?您的 ctor 中没有 if 测试,因此一次调用应该可以执行我看到的所有代码。

你写的代码太多了。setUp 和 tearDown 和 test 构造方法都是不必要的。删除它们。

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

于 2013-10-16T19:25:29.240 回答