我正在研究一个实用的单元测试实验室。下面是我正在测试的应用程序(我正在测试所有方法和构造函数)。我的所有测试都是完全接受的,即测试一个名为“isScalene()”的方法,检查三角形是否是一个斜角(所有边都是唯一的)。
您发现底部失败的测试方法。当我将“equalateral”改为True而“scalene”改为False时,它会通过。应用程序出了问题,但我无法弄清楚它是什么(可能在“uniqueSides()”中。)
如果有人可以帮助我,我将不胜感激!
public class Triangle {
double[] sides;
public Triangle(double a, double b, double c) {
if ((a <= 0) || (b <= 0) || (c <= 0)){
throw new ArgumentOutOfRangeException("Sidorna måste vara större än 0.");
}
sides = new double[] { a, b, c };
}
private int uniqueSides() {
return sides.Distinct<double>().Count();
}
public bool isScalene() {
if (uniqueSides() == 1){
return true;
}
else{
return false;
}
}
public bool isEquilateral() {
if (uniqueSides() == 3){
return true;
}
else{
return false;
}
}
public bool isIsosceles() {
if (uniqueSides() == 2){
return true;
}
else{
return false;
}
}
}
...
[TestMethod()]
public void isScalene3Test3()
{
Triangle triangle = new Triangle(25, 250, 2000);
var isosceles = triangle.isIsosceles();
var equalateral = triangle.isEquilateral();
var scalene = triangle.isScalene();
Assert.IsFalse(isosceles, "Test Isosceles");
Assert.IsFalse(equalateral, "Test Equalateral");
Assert.IsTrue(scalene, "Test Scalene");
}
答案 0 :(得分:5)
isEquilateral应该使用1个唯一的一方,而isScalene应该使用3个。
public class Triangle {
double[] sides;
public Triangle(double a, double b, double c) {
if ((a <= 0) || (b <= 0) || (c <= 0)){
throw new ArgumentOutOfRangeException("Sidorna måste vara större än 0.");
}
sides = new double[] { a, b, c };
}
private int uniqueSides() {
return sides.Distinct<double>().Count();
}
public bool isScalene() {
if (uniqueSides() == 3){
return true;
}
else{
return false;
}
}
public bool isEquilateral() {
if (uniqueSides() == 1){
return true;
}
else{
return false;
}
}
public bool isIsosceles() {
if (uniqueSides() == 2){
return true;
}
else{
return false;
}
}
}
答案 1 :(得分:0)
您不想检查(uniqueSides() == 3)
而不是1吗?
无论如何,调试代码可以帮助你很快找到答案。