2

我有两个类Calculator1Calculator2它们位于com.zzy.junit.usersrc 文件夹下的包中。我使用 myeclipse 创建了两个测试类来分别测试它们。当我执行其中的一个测试类时,Junit4如何知道测试的是哪个类?

1级

package com.zzy.junit.user;

public class Calculator1 {

    private int a;
    private int b;

    public Calculator1(int a,int b)
    {
        this.a = a;
        this.b = b;
    }

    public int add()
    {
        return a+b;
    }
}

2 级

package com.zzy.junit.user;

public class Calculator2{

    public int divide(int a,int b)
    {
        return a/b;
    }
}

还有两个测试类如下:它们都在名为 test 的 src 文件夹中

测试类 1

package com.zzy.junit.user;

import static org.junit.Assert.*;
import static org.hamcrest.Matchers.*;  

import org.junit.Test;

public class TestCalculator1 {

    @Test
    public void testAdd() {
        Calculator1 s = new Calculator1(3,6);
        int z = s.add();
        assertThat(z,is(9));
    }

}

测试类 2

package com.zzy.junit.user;

import static org.junit.Assert.*;
import static org.hamcrest.Matchers.*;

import org.junit.Test;

public class TestCalculator2 {

    @Test
    public void testDivide() {
        TestCalculator2 t = new TestCalculator2();
        int z = t.divide(4, 2);
        assertThat(z,is(2));
    }

}

我想知道如果我执行名为 的测试类TestCalculator2,Junit4 怎么知道我确实想要测试Calculator1类。它与测试类的名称有关吗?

4

3 回答 3

3

JUnit 是一个用于执行可以通过或失败的测试的框架。单个测试通常集中于单个类这一事实是大多数 Java 程序员遵守的惯例。JUnit4 不知道正在测试哪些类,它只是执行所有用@Test.

于 2012-12-08T08:26:09.790 回答
0

通常是因为它的名称以“Test”结尾,或者因为它有 @Test 注释。

于 2012-12-09T13:13:52.330 回答
0

根据您(之前)发布的测试代码, in 的testAdd方法TestCaculator1正在测试 in 的add方法,Student而 in 的testDivide方法TestCaculator1正在测试 in 的divide方法Teacher

通过您上次的编辑,测试类名称现在更接近于测试类的名称。

正如另一个答案中所指出的,尽管人们倾向于按照惯例建立一对一的关系,但实际上并没有要求测试类专门用于测试特定类。

真正的联系是在方法级别,完全取决于测试方法实际执行的类。

于 2012-12-12T10:43:26.653 回答