현재 프로젝트에 대한 단위 테스트를 작성하기 시작했습니다. 그래도 경험이 없습니다. 먼저 "완료"하고 싶기 때문에 현재 IoC 프레임 워크 나 조롱 라이브러리를 사용하지 않습니다.
단위 테스트에서 객체의 생성자에 null 인수를 제공하는 데 문제가 있는지 궁금합니다. 몇 가지 예제 코드를 제공하겠습니다.
public class CarRadio
{...}
public class Motor
{
public void SetSpeed(float speed){...}
}
public class Car
{
public Car(CarRadio carRadio, Motor motor){...}
}
public class SpeedLimit
{
public bool IsViolatedBy(Car car){...}
}
또 다른 Car Code Example (TM)은 질문에 중요한 부분으로 축소되었습니다. 나는 이제 다음과 같은 테스트를 작성했다.
public class SpeedLimitTest
{
public void TestSpeedLimit()
{
Motor motor = new Motor();
motor.SetSpeed(10f);
Car car = new Car(null, motor);
SpeedLimit speedLimit = new SpeedLimit();
Assert.IsTrue(speedLimit.IsViolatedBy(car));
}
}
시험은 잘 진행됩니다. SpeedLimit
필요 Car
A를을 Motor
그 일을하기 위해. 전혀 관심이 없기 CarRadio
때문에 null을 제공했습니다.
완전히 구성되지 않고 올바른 기능 을 제공하는 객체 가 SRP 또는 코드 냄새를 위반 하는지 궁금합니다 . 나는이 잔소리가 있지만 speedLimit.IsViolatedBy(motor)
기분이 좋지 않습니다. 속도 제한은 모터가 아닌 자동차에 의해 위반됩니다. 전체 의도 는 전체 의 일부만 테스트 하기 때문에 단위 테스트와 작업 코드에 대해 다른 관점이 필요할 수도 있습니다.
단위 테스트에서 null로 객체를 생성하는 것이 코드 냄새입니까?
null
라디오로 속도 제한이 올바르게 계산되었는지 테스트했습니다 . 지금 당신은 제한 속도를 확인하기위한 테스트 생성 할 수 있습니다 와 라디오를; 행동이 다른 경우에 대비하여 ...
Motor
아마도 전혀 없어야speed
합니다. 전류 와를 기반으로throttle
하고를 계산 해야합니다 . 그것을 사용하여 현재 속도로 통합하고 그것을 다시 신호 로 바꾸는 것이 자동차의 일입니다 ... 그러나 어쨌든 당신은 현실주의를 위해 있지 않았습니까?torque
rpm
throttle
Transmission
rpm
Motor