이메일 서비스 (SMTP 사용)에 대해 쓴 Unit Tests를보고 있는데, 특히 한 가지 테스트만으로 충분할 지 궁금합니다.단위 테스트가 충분합니까?
[PluginFamily("EmailService")]
public interface IEmailService
{
Boolean SendEmail(string toAddress, string fromAddress, string bccAddress, string ccAddress, string subject,
string body, bool html);
}
[Pluggable("EmailService")]
public class EmailService : IEmailService
{
private IConfigurationReader _configReader;
public EmailService(IConfigurationReader configurationReader)
{
_configReader = configurationReader;
}
public bool SendEmail(string toAddress, string fromAddress, string bccAddress, string ccAddress, string subject, string body, bool isHtml)
{
MailMessage email = new MailMessage();
try
{
if (_configReader.TestMode)
{
toAddress = _configReader.TestEmailAddress;
}
}
//send email here
}
}
내가 IConfigurationReader (의 ConfigurationManager에 대한 기본적 래퍼)을 조롱하고 내 "테스트 모드"로 이메일을 보낼 수있는 경우 테스트하기 위해 true로 테스트 모드를 설정하고있다 : 여기 내 이메일 서비스의 조각이다 .
[Test]
public void Validate_Send_Email_In_Test_Mode()
{
bool result;
MockRepository mockRepository = new MockRepository();
var mockConfigReader = mockRepository.StrictMock<IConfigurationReader>();
using (mockRepository.Record())
{
SetupResult.For(mockConfigReader.TestMode).Return(true);
SetupResult.For(mockConfigReader.TestEmailAddress).Return("[email protected]");
SetupResult.For(mockConfigReader.EmailContentLocation).Return("test");
SetupResult.For(mockConfigReader.SmtpHost).Return("test.mail.com");
}
ObjectFactory.InjectStub(typeof(IConfigurationReader), mockConfigReader);
emailService = ObjectFactory.GetInstance<IEmailService>();
using (mockRepository.Playback())
{
result = emailService.SendEmail("[email protected]",
"[email protected]", "", "",
"this is a unit test - config in test mode", "body of unit test", true);
}
Assert.That(result, Is.True);
ObjectFactory.ResetDefaults();
}
이는 단위 테스트에 대한 충분인가 : 그래서 내 단위 테스트는이 (.이 방법에 내 단위 테스트 중 하나입니다 나는 100 %의 코드 커버리지를) 같이 보입니다? 그것을 개선하기 위해 무엇을 할 수 있습니까?
나는 내 방법이 사실로 돌아가고 있는지 확인하는 것만으로는 충분하지 않은 단위 테스트입니다.
많은 사람들이 코드 커버리지가 좋은 테스트의 큰 징후는 아니라고 말하지만 코드 커버리지가 2 % 인 경우에는 분명히 먼 길을 간다. 코드 커버리지가 처음이라면 98 %에 도달하고 마지막 예외가 발생할 때마다 걱정할 필요가 없습니다. 그냥 2 센트입니다. –
Allen - 이메일 서비스에 대해 100 % 보장합니다. 나는 내 단위 테스트가 충분히 충분한 지보고 싶다고 생각한다 ... –
100 % 기능 범위와 적절한 분기 커버리지가 좋은 표시가되어야한다. – workmad3