Ben JUnit System.out.println() kullanarak yazdırılan bir işlevi test ediyorum. Beklenen çıktıyı + \ n alıyorum ve yazdırılanla karşılaştırdım ve test başarısız oluyor. Ancak, S.o.println() ile S.o.print() arasında geçiş yaparsam ve yeni satır karakterini beklenen çıktıya eklemezsem, iyi çalışır. Hata, belki de iki yeni satır eklendiğine benziyor. Ancak, \ n \ n eklenmesi de işe yaramadı.JUnit testi, S.o.println işlevi için beklenen çıktıya n ekledikten sonra bile başarısız oluyor
fonksiyon test edilen:
public void printTime() {
String h0 = "";
String m0 = "";
String s0 = "";
if(hour < 10)
h0 = "0";
if(min < 10)
m0 = "0";
if(sec < 10)
s0 = "0";
System.out.println(h0+hour+":"+m0+min+":"+s0+sec);
}
testi:
@Test
public void testPrintTime() {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
System.setOut(new PrintStream(baos));
clock.printTime();
assertEquals("12:00:00\n", baos.toString());
}
hata PrintTime bir println yaparsa
org.junit.ComparisonFailure: expected:<12:00:00[]
> but was:<12:00:00[
]
>
Ne "12: 00: 00 \ r \ n" 'bekliyoruz olur'? – derlarsschneider
Bu kodu test etmek için [Sistem Kuralları] 'nı (http://stefanbirkner.github.io/system-rules/)' SystemOutRule 'kullanabilirsiniz. İşletim sistemine bağlı olmayan testler yazmanıza izin veren bir getLogWithNormalizedLineSeparator() yöntemine sahiptir. –