[英]Unit Testing Method Arguments
我希望這是可行的。 我想使用單元測試來驗證方法參數。 我想確保零不會作為參數傳遞。
要測試的代碼
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
}
}
我想使用單元測試來驗證方法參數。
不,你沒有。 這不是單元測試的目的。 您的單元測試在開發期間運行,但在編譯代碼后,您不會使用二進制文件部署測試。 反正不是用來消費的。
使用單元測試是不可能做到這一點的,您可以在單元測試中使用以下代碼替代:
public double divide(int dividend, int divisor)
{
if (divisor == 0) throw new ArgumentException("Cannot be 0", nameof(divisor));
// ...
}
您可以控制單元測試傳遞給您的方法的內容,但您無法控制其他人調用它時將傳遞的內容。 因此,驗證必須在實際方法中進行,而不是在您的測試中進行。
單元測試是一種基於邏輯的測試。
測試方法的參數沒有任何意義,因為方法的參數是一個工具,以建立自己的業務邏輯。
你不能測試參數。
您需要驗證 main 方法中的參數,例如:
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);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.