2016-04-08 14 views
0

JUnit ve Unit Testing konusunda çok yeni ve tarayıcı nesnesine kullanıcı girdilerinin alay edilmesiyle ilgili bir sorum var. Test etmek istediğim şu kodum var. Çok basit.Kullanıcı girdisini Tarayıcı nesnesine alay için Junit'i kullanma

Çalıştır Kod

import java.util.Scanner; 

public class MyGame{ 
    public MyGame() { 
     Scanner response = new Scanner(System.in); 

     int game; 

     System.out.println("Enter a game."); 
     System.out.println("Press 1 for Super Awesome Bros."); 
     System.out.println("Press 2 for a Random game."); 

     game = response.nextInt(); 

     if (game == 1){ 
      System.out.println("Super Awesome Bros."); 
    } 
    } 
} 

İşte benim Testcase benim deneme ortamımızda Yani

import org.junit.Rule; 
import org.junit.Test; 
import org.junit.runner.RunWith; 
import org.junit.runners.JUnit4; 
import org.junit.contrib.java.lang.system.StandardOutputStreamLog; 
import org.junit.contrib.java.lang.system.TextFromStandardInputStream; 
import static org.junit.Assert.assertThat; 
import static org.hamcrest.CoreMatchers.containsString; 
import static org.junit.contrib.java.lang.system.TextFromStandardInputStream.*; 

@RunWith(JUnit4.class) 
    public class Testsuite { 

     @Rule 
     public final StandardOutputStreamLog out = new StandardOutputStreamLog(); 

     @Rule 
     public final TextFromStandardInputStream in = emptyStandardInputStream(); 

    @Test 
    public void printOutput() { 
    in.provideText("1\n"); 
    new MyGame(); 
    assertThat(out.getLog(), containsString("Super Awesome Bros.")); 
    } 

} 

, ben 1 yüzden beklenen çıkışı alabilir olmak girişi alay çalışıyorum olduğunu. Ama bir sebepten dolayı kodum çıktıdan bağımsız olarak geçer. Neyi yanlış yaptığımı bilmiyorum. Çıktı beklenen değil ise test başarısız olmalıdır. Birisi sorunu tespit edebilir mi? Yine, sadece JUnit ve Unit Testing'in bir kavrayışını almaya çalışıyorum. Çoğunlukla Python'da test yapmak için kullanıyorum. Gelişmiş olan herkese teşekkürler.

+2

[IntelliJ IDEA] 'yı yükleyin (https://www.jetbrains.com/idea/), test adını sağ tıklayıp "Hata Ayıklama" yı seçin, sonra yürütme işlemini izleyebilecek ve nedenini kolayca bulabileceksiniz. başarısız olur/başarılı olur. Ayrıca, nasıl yapılacağından emin değilseniz, hata ayıklama hakkında bilgi edinin: https://www.jetbrains.com/help/idea/2016.1/debugging.html – user3707125

+0

Testin ilk satırını değiştirirseniz testin hala yeşil olduğunu mu demek istiyorsunuz? in.provideText ("2 \ n"); '? –

+0

Testinizi nasıl yürütüyorsunuz? –

cevap

0

Testiniz her zaman geçiyor çünkü her zaman "Süper Harika Bros için 1'e basın" dizesini yazıyorsunuz. Bu nedenle, her zaman

denetimleriyle eşleşir. Bu arada @RunWith(JUnit4.class) yazmanız gerekmez. Bu satırı kaldırabilirsiniz.