【发布时间】:2010-11-25 00:43:18
【问题描述】:
我有一个名为TestMakeAValidCall() 的单元测试。它会测试我的手机应用是否能打出有效的电话。
我即将编写另一个名为TestShowCallMessage() 的测试,它需要为测试进行有效调用。在那个测试中只调用TestMakeAValidCall() 是不是很糟糕?
作为参考,这是我的TestMakeAValidCall() 测试。
[TestMethod]
public void TestMakeAValidCall()
{
//Arrange
phone.InCall = false;
phone.CurrentNumber = "";
// Stub the call to the database
data.Expect(x => x.GetWhiteListData()).
Return(FillTestObjects.GetSingleEntryWhiteList());
// Get some bogus data
string phoneNumber = FillTestObjects.GetSingleEntryWhiteList().
First().PhoneNumber;
// Stub th call to MakeCall() so that it looks as if a call was made.
phone.Expect(x => x.MakeCall(phoneNumber)).
WhenCalled(invocation =>
{
phone.CurrentNumber = phoneNumber;
phone.InCall = true;
});
//Act
// Select the phone number
deviceControlForm.SelectedNumber = phoneNumber;
// Press the call button to make a call.
deviceMediator.CallButtonPressed();
//Assert
Assert.IsTrue(phone.InCall);
Assert.IsTrue(phone.CurrentNumber == phoneNumber);
}
【问题讨论】:
-
感谢所有出色的答案。我将重复的代码重构为单独的调用。我选择了得票最多的答案。
标签: c# visual-studio unit-testing