我希望这是可行的。我想使用单元测试来验证方法参数。 我想确保零不作为参数传递。
要测试的代码
public class TestParameter
{
public double divide(int dividend, int divisor)
{
double quotient = 0;
if (divisor!=0)
quotient= dividend / divisor;
return quotient;
}
}
单元测试
[TestClass]
public class UnitTestIntro
{
[TestMethod]
public void ZeroDivision()
{
TestParameter test = new TestParameter();
double ans = test.divide(10, 0);
//Assert.IsTrue();
//I want to assert that divide does not allow 0 divisor as an argument
}
}
答案 0 :(得分:4)
我想使用单元测试来验证方法参数。
不,你不知道。那不是单元测试的目的。您的单元测试在开发过程中运行,但是在编译代码之后,您不会将测试与二进制文件一起部署。无论如何,不是为了消费。
不可能使用单元测试来做到这一点,不能替代可以放在单元测试中的这段代码:
public double divide(int dividend, int divisor)
{
if (divisor == 0) throw new ArgumentException("Cannot be 0", nameof(divisor));
// ...
}
您可以控制将单元测试传递给方法的内容,但是不能控制其他人在调用它时将通过什么方法。因此,验证必须在实际方法中进行,而不是在测试中进行。
答案 1 :(得分:2)
单元测试是基于逻辑的测试。
测试方法参数没有意义,因为方法参数是用于构建自己的业务逻辑的仪器。
您无法测试参数。
您需要在主要方法中验证参数,例如:
public class TestParameter
{
public double divide(int dividend, int divisor)
{
if (divisor == 0) // Validation
throw new ArgumentException("Argument can't be '0'", nameof(divisor));
return dividend / divisor;
}
}
然后在测试中对其进行测试:
[TestMethod]
public void ZeroDivision()
{
TestParameter test = new TestParameter();
Exception expectedException = null;
try
{
double ans = test.divide(10, 0);
}
catch (System.Exception e)
{
expectedException = e;
}
Assert.IsNotNull(expectedException);
}