1
테스트 구동 개발주기를 따르려면 먼저 테스트를 먼저 작성한 다음 코드를 작성해야합니다. 나는 다음과 같은 클래스가있는 경우 그러나, :지연 초기화를 수행하는 TDD 코드
public class ServiceProvider : IServiceProvider
{
private readonly IService1 service1;
private readonly IService2 service2;
...
public ServiceProvider()
{
service1 = new Service1();
service2 = new Service2();
...
}
public IService1 Service1 { get { return service1; } }
public IService2 Service2 { get { return service2; } }
...
}
그냥 확인하는 테스트를 반환하는 경우는 null이 아님 :
[TestFixture]
public class ServiceProviderTest
{
[Test]
public void ServicesAreNotNull()
{
var serviceProviderUT = new ServiceProvider();
Assert.That(serviceProviderUT.Service1, Is.Not.Null);
Assert.That(serviceProviderUT.Service2, Is.Not.Null);
...
}
}
전에서 가서 저를 강제로 테스트를 작성하는 방법 그 수업을 다음 학급으로?
public class ServiceProvider : IServiceProvider
{
private readonly Lazy<IService1> service1;
private readonly Lazy<IService2> service2;
...
public ServiceProvider()
{
service1 = new Lazy<IService1>(() => new Service1());
service2 = new Lazy<IService2>(() => new Service2());
...
}
public IService1 Service1 { get { return service1.Value; } }
public IService2 Service2 { get { return service2.Value; } }
...
}
답장을 보내 주셔서 감사합니다.하지만 행동에 관해서 이야기하고 있으니 답변이 BDD가 아닌 BDD와 관련이 있는지 궁금합니다. TDD가 아니라면 (나는 여전히 그 차이점을 찾으려고합니다.) 변수가 느슨하게 초기화되었는지 여부를 테스트 할 필요가 없다는 말입니까? – Charlie
글쎄, 어떤 경우에 ** 무언가가 게으른 경우 유효성을 검사 할 수도 있습니다. 예를 들어'yield return'이 사용되는지 확인하는 것입니다. –
BDD가 다른 것입니다. BDD는 지정된 형식의 사양입니다. 감안할 때 ... 언제 ... 이상 ... 구현 세부 사항에 의존하고 싶지 않기 때문에 우리는 TDD에서 개인 물건을 테스트하지 않습니다. – ntohl