Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/397.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,我有两个类Calculator1和Calculator2,它们位于src文件夹下名为com.zzy.junit.user的包中。我使用myeclipse创建了两个测试类,分别对它们进行测试。当我执行其中的一个测试类时,Junit4如何知道测试的是哪个类 第一类 第二类 和两个测试类,如下所示: 它们都位于名为test的src文件夹中 测试等级1 测试等级2 我想知道如果我执行了名为TestCalculator2的测试类,Junit4如何知道我想要测试Calculator1类。它与测试类的名称有关

我有两个类
Calculator1
Calculator2
,它们位于src文件夹下名为
com.zzy.junit.user
的包中。我使用myeclipse创建了两个测试类,分别对它们进行测试。当我执行其中的一个测试类时,Junit4如何知道测试的是哪个类

第一类 第二类 和两个测试类,如下所示: 它们都位于名为test的src文件夹中

测试等级1 测试等级2
我想知道如果我执行了名为
TestCalculator2
的测试类,Junit4如何知道我想要测试
Calculator1
类。它与测试类的名称有关吗?

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

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

基于您(以前)发布的测试代码,
TestCaculator1
中的
testAdd
方法正在测试
Student
中的
add
方法,而
TestCaculator1
中的
testDivide
方法正在测试
Teacher
中的
divide
方法

通过上次编辑,测试类名称现在与测试类的名称更紧密地对齐

正如在另一个答案中所指出的,虽然人们倾向于按照惯例建立一对一的关系,但并没有真正要求测试类专门测试特定的类


真正的连接在方法级别,完全由测试方法实际使用的类决定。

通常测试代码指定它要测试的类。如果您发布您的测试类代码,我们可能会更详细地解释。谢谢您的回复!我已经发布了两个测试类@zzy7186您的代码毫无意义。为什么你的老师/学生课程中混合了与计算器相关的课程?你发对代码了吗?@Duncan Jones对不起,我弄错了,我现在已经把代码修好了!谢谢你的信赖!根据你的说法,如果我更改了测试类的名称,Junit4应该不知道我要测试哪个类。但是当我将TestCaculator2更改为ExecuteCaulator2时,代码仍然有效。你能解释得更详细一点吗?@zzy7186如果我的答案回答了你的问题,请让其他人知道你的问题已经解决了。+1:最好的答案,尽管我很高兴地根据发布的测试代码添加了我的2美分。@Duncan Jones非常感谢!谢谢你纠正我的英语语法错误和代码风格。我会尽我最大的努力学习英语,这样我可以减少英语错误。通过你的回复,我对junit4有了更好的理解。非常感谢!
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;
    }
}
package com.zzy.junit.user;

public class Calculator2{

    public int divide(int a,int b)
    {
        return a/b;
    }
}
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));
    }

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

}