Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.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 如何在三角形上执行功能测试_Java_Code Coverage_Functional Testing - Fatal编程技术网

Java 如何在三角形上执行功能测试

Java 如何在三角形上执行功能测试,java,code-coverage,functional-testing,Java,Code Coverage,Functional Testing,我试着做功能测试来检查三角形。我有三个整数输入。三个输入变量分别描述三角形每边的长度。三角形边的长度应小于或等于1000。此方法的输出将是5个可能值之一:1个为不等边三角形,2个为等腰三角形,3个为等边三角形,4个为不描述三角形的值,5个为超出边界的值 这是我写的第一个测试,但我不知道它是否正确 public class TriangleTypeFunctionalTest { @Before public void setUp() throws Exception {

我试着做功能测试来检查三角形。我有三个整数输入。三个输入变量分别描述三角形每边的长度。三角形边的长度应小于或等于1000。此方法的输出将是5个可能值之一:1个为不等边三角形,2个为等腰三角形,3个为等边三角形,4个为不描述三角形的值,5个为超出边界的值

这是我写的第一个测试,但我不知道它是否正确

public class TriangleTypeFunctionalTest {
    @Before
    public void setUp() throws Exception {
    }

    @Test
    public void testTriangleScalene(x,y,z) {
        if(x < 1000 and y <1000 and z< 1000){
            if ( ( x != y ) and ( x != z ) and ( y !=z ) )  
                return True;
            else
                return False;
        }
        else
            return False;

    }

}
公共类TriangleTypeFunctionalTest{
@以前
public void setUp()引发异常{
}
@试验
公共空间三角形(x,y,z){

如果(x<1000和y要有一个三角形,则一侧的长度必须小于其他两侧的总和

尝试:


if(x+y为了得到一个三角形,每一条边都应该小于其他两条边的总和。(我建议您使用JUnit4)。
只需将
(x,y,z)
trey的条件传递给
assertTrue
方法即可

import static org.junit.Assert.assertTrue;
import org.junit.Test;

public class TriangleTypeFunctionalTest {
   private int x;
   private int y;
   private int z;

   @Before
   public void setUp() throws Exception {
       x = //some mock value;
       y = //some mock value;
       z = //some mock value;
   }

   @Test
   public void testTriangleScalene() {
       assertTrue((x < 1000 && y <1000 && z< 1000));
       assertTrue(( x + y > z) && (x + z > y) && (y + z > x));
   }
}
import static org.junit.Assert.assertTrue;
导入org.junit.Test;
公共类TriangleTypeFunctionalTest{
私人INTX;
私营企业;
私人INTZ;
@以前
public void setUp()引发异常{
x=//一些模拟值;
y=//一些模拟值;
z=//一些模拟值;
}
@试验
公共无效testTriangleScalene(){
资产真实性((x<1000&&y z)&&&(x+z>y)&&(y+z>x));
}
}

首先,您需要知道三个数字是三角形边的条件。它们是:

// Sides a, b, c
a + b > c
b + c > a
c + a > b
a > 0
b > 0
c > 0
接下来,您需要一种方法来区分不同类型的三角形。数字代码不是一种方法

enum TriangleType {
    EQUILATERAL,
    ISOSCELES,
    SCALENE,
    INVALID,
    OVERSIZE
}
接下来,您需要编写一个类来测试三个值是否为三角形的边。事实上,将其设置为
triangle
本身,但不要编写类型方法,因为您需要进行测试驱动开发

public class Triangle {
    int a;
    int b;
    int c;
    public Triangle(int a, int b, int c) {...}
    public TriangleType type() {
        return null;
        // Not really written yet.
    }
}
现在,您想为
type()
编写测试,然后编辑
type()
,直到测试成功。让我们从正面开始

public class TypeTest {
    @Test
    public void negativeSideAFails() {
        Triangle t = new Triangle(-10, 10, 20);
        Assert.assertEquals(TriangleType.INVALID, t.type());
    }
}
您也应该为b端和c端编写类似的测试。如果这两个值不相等,assertEquals方法将引发异常,JUnit测试运行程序会将其转换为测试失败

编辑
类型
方法,直到这些方法起作用,然后继续测试其他条件:

    @Test
    public void sideAMustBeShorterThanSumOfOtherTwo() {
        Triangle t = new Triangle(100, 10, 20);
        Assert.assertEquals(TriangleType.INVALID, t.type());
    }
然后,为表示所有
三角形类型的值编写测试


你会有很多测试,但是你可以在以后学习
@参数化的
测试时简化它们。

因为他正在尝试编写JUnit测试,所以他应该使用assert方法,方法应该是
void
。他应该尝试测试某种三角形对象,而不仅仅是抛出随机数你说的是模拟值吗?你的意思是像整数一样。像x=某个数字吗?是的。你可以用任何其他数字类型来切换
整数类型。:)谢谢你的精彩解释。我忘了提到的一件事是triangleType类是给我的。如果给你的话,就使用它。但是枚举比数字代码更好。至少,使用符号名并在
Triangle
public static int EQUILATERAL=3;
中写入,然后使用
Triangle.EQUILATERAL即可在您的代码中。实际上,有一天您需要回顾六个月前编写的代码,并且您不想说“我在做什么?”
    @Test
    public void sideAMustBeShorterThanSumOfOtherTwo() {
        Triangle t = new Triangle(100, 10, 20);
        Assert.assertEquals(TriangleType.INVALID, t.type());
    }