Mevcut projem için bazı birim testleri yazmaya başladım. Bununla birlikte gerçekten bir deneyimim yok. Öncelikle tamamen "almak" istiyorum, bu yüzden şu anda ne IoC çerçevemi ne de alaycı bir kütüphane kullanıyorum.
Birim testlerinde nesnelerin kurucularına boş argümanlar sunarken yanlış bir şey olup olmadığını merak ediyordum. Bazı örnek kod vereyim:
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){...}
}
Yine Bir Başka Araba Kodu Örneği (TM), yalnızca soru için önemli olan kısımlara indirgenmiştir. Şimdi böyle bir şey bir test yazdım:
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));
}
}
Test iyi çalışıyor. SpeedLimit
Bir şey yapmak için bir Car
ile ihtiyacı var Motor
. Hiç ilgilenmiyor CarRadio
, bu yüzden boş verdim.
Tamamen oluşturulmadan doğru işlevsellik sağlayan bir nesnenin SRP veya kod kokusu ihlali olup olmadığını merak ediyorum . Bu dırdırcı hislerim var ama speedLimit.IsViolatedBy(motor)
haklı çıkmıyor - hız limiti motor tarafından değil, araba tarafından ihlal ediliyor. Belki de ünite testleri ve çalışma kodları için farklı bir perspektife ihtiyacım var, çünkü amacım bütünün sadece bir bölümünü test etmektir.
Birim testlerinde null değerine sahip nesneler oluşturmak bir kod kokusu mu?
null
radyo ile hız limitinin doğru hesaplandığını test ettiniz . Şimdi hız sınırını bir radyo ile doğrulamak için bir test oluşturmak isteyebilirsiniz ; sadece davranış farklı olursa ...
Motor
muhtemelen hiç olmamalıdırspeed
. Akım ve 'throttle
atorque
dayalı bir hesaplamaya sahip olmalı . Bunu bir güncel hıza dahil etmek ve onu tekrar sinyal haline getirmek için kullanmak, arabanın işi ... Ama sanırım, zaten gerçekçilik için içinde değildin, değil mi?rpm
throttle
Transmission
rpm
Motor