Tzn. mam program i od użytkownika pobieram np. 10 intów. Program coś tam robi i wypisuje wynik. Co zrobić, żebym podczas testowania nie musiał ręcznie wklepywać tych 10 danych, tylko je jakoś wkleić?
@kuhar: A to w Bashu na Linuksie. Jest jakiś odpowiednik tima w Wierszu Poleceń (pracujemy pod Windowsami)? Bo przekierowania strumieni to się robi podobnie.
Chociaż wolałbym, żeby było spod NetBeansa, a nie przełączać się na konsolę ;P
@mk321: Dwukrotnie podmieniasz strumień wejścia, więc scanner wykorzysta ten ostatni, gdzie na wejściu jest tylko dwójka. Jeśli chcesz wykorzystać jak w przykładzie metodę
Próbowałem z \n, ale mi nie działało. A rzeczywiście dla przykładu co podałem to działa.
Bo też mam problem z wczytywaniem na zmianę. Bo jak zrobię nextInt() i potem chcę zrobić nextLine(), to muszę zrobić jeszcze raz nextLine() (bo z tamtego inta została pusta linia).
@mk321: Tak, m.in. JUnit. Prawdę mówiąc, niewiele więcej czasu Ci zajmie nauka i zastosowanie JUnita, niż wymyślanie swojej metody do tego typu testowania - potem stwierdzisz, że można coś zgeneralizować i jeszcze raz i jeszcze raz.... i w efekcie napiszesz swojego frameworka testowego.
Jak szybko zrobić test programu konsolowego?
Tzn. mam program i od użytkownika pobieram np. 10 intów. Program coś tam robi i wypisuje wynik. Co zrobić, żebym podczas testowania nie musiał ręcznie wklepywać tych 10 danych, tylko je jakoś wkleić?
@mk321: To znaczy, że program słabo napisany.
@akurczak: Dzięki za link. Szukałem tam, ale tego nie widziałem.
Jak wrzucam tylko jedną liczbę to jest OK:
' InputStream stdin = System.in; '
System.setIn(new ByteArrayInputStream("1".getBytes()));
Scanner scanner = new Scanner(System.in);
System.out.println(scanner.nextLine());
Ale jak już chcę więcej (a o to mi właśnie chodzi, że jest ich dużo), to nie wiem jak (to nie działa):
InputStream stdin = System.in;
System.setIn(new ByteArrayInputStream("1".getBytes()));
przekirowanie i/o: http://linuxcommand.org/lts0060.php
na windowsie tez dziala, a time muszisz sobie jakies znalezc sam
Chociaż wolałbym, żeby było spod NetBeansa, a nie przełączać się na konsolę ;P
nextLine()
to po prostu będziesz miał np.
System.setIn(new ByteArrayInputStream("1\n7".getBytes()));
.
W ten sposób wczytujesz całe linie w postaci Stringów, a mówiłeś o intach, więc wykorzystasz prawdopodobnie metodę
nextInt()
, a więc wystarczy, że oddzielisz liczby w Stringu reprezentującym wejście spacjami. No i oczywiście link podsyłałem z myślą o
Próbowałem z \n, ale mi nie działało. A rzeczywiście dla przykładu co podałem to działa.
Bo też mam problem z wczytywaniem na zmianę. Bo jak zrobię nextInt() i potem chcę zrobić nextLine(), to muszę zrobić jeszcze raz nextLine() (bo z tamtego inta została pusta linia).
http://stackoverflow.com/questions/14452613/issues-with-nextline
I jak chcę wczytać np.
8
n
n
To mam (i działa):
System.setIn(new ByteArrayInputStream("8\nn\nn".getBytes()));
Ale jak już
nextLine()
, a tam, gdzie masz inty wykorzystać statyczną metodę
Integer.parseInt(String str)