Java 如何在三角形上执行功能测试
我试着做功能测试来检查三角形。我有三个整数输入。三个输入变量分别描述三角形每边的长度。三角形边的长度应小于或等于1000。此方法的输出将是5个可能值之一:1个为不等边三角形,2个为等腰三角形,3个为等边三角形,4个为不描述三角形的值,5个为超出边界的值 这是我写的第一个测试,但我不知道它是否正确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 {
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());
}