0
美好的一天!請通過moq和c檢查我的單元測試#
我剛開始學習和練習做測試(不是TDD :))。 所以,我寫了一些小測試,但不知道 - 是對的嗎?它是綠色的,但我不能做它紅色(失敗)。
我用this msdn forum as example來做到這一點。
因此,我創建一個接口與一個功能。參數選項 - 帶有一些字段選項的對象。
public interface ICmdParseWrapper
{
String getName(ServiceArgs options);
}
public class CmdParserWrapper
{
private readonly ICmdParseWrapper dependency;
public CmdParserWrapper(ICmdParseWrapper dependency)
{
this.dependency = dependency;
}
public String ValidateGetName(ServiceArgs options)
{
return this.dependency.getName(options);
}
public static String getName(ServiceArgs options)
{
return (!String.IsNullOrEmpty(options.Name)) ? options.Name : "Error in getName! is null or empty";
}
}
所以,我創建testMethod並且它通過了!但我不確定 - 我是對的嗎?我改變字符串「錯誤!」,但測試再次通過。 這裏這個類和測試方法。
[TestClass]
public class UnitTest1
{
[TestMethod]
public void TestMethod_getName()
{
ServiceArgs options=new ServiceArgs();
// options.ModeName="";
var mock = new Mock<ICmdParseWrapper>();
mock.Setup(foo=>foo.getName(options)).Returns("Error in getName! is null or empty");
var testClass = new CmdParserWrapper(mock.Object);
String validateGetName = testClass.ValidateGetName(options);
mock.VerifyAll();
}
}
請問,你能告訴我 - 測試是否正確?
以及如何失敗測試?他通過了,即使我在fuc getName中返回null .. – user2545071
根據驗證,如果您的系統受測試中未調用dependency.GetName(options)方法,則此測試將失敗。請記住,您沒有測試dependency.GetName(options)中的行爲。你的依賴被嘲笑。你真正測試的是CmdParserWrapper.ValidateGetName(options)方法的行爲。 – Spock