• 1000 Это код для теста:
@Test
public void MyTestMain1(){
String input = "1\n2\n2\n";
ByteArrayInputStream in = new ByteArrayInputStream(input.getBytes());
System.setIn(in);
ByteArrayOutputStream out = new ByteArrayOutputStream();
System.setOut(new PrintStream(out));
String [] args = {};
Demo.main(args);
// expected output:
String consoleOutput = "Enter side 1: \n";
consoleOutput += "Enter side 2: \n";
consoleOutput += "Enter side 3: \n";
consoleOutput += "This is a triangle.\n";
assertEquals(consoleOutput, out.toString());
}
А вот код моего основного класса:
public class Demo {
public static void main(String[] args) {
// Reading from System.in
Scanner reader = new Scanner(System.in);
System.out.println("Enter side 1: ");
// Scans the next token of the input as an int.
int side_1 = reader.nextInt();
System.out.println("Enter side 2: ");
// Scans the next token of the input as an int.
int side_2 = reader.nextInt();
System.out.println("Enter side 3: ");
// Scans the next token of the input as an int.
int side_3 = reader.nextInt();
if (isTriangle(side_1, side_2, side_3)) {
System.out.println("This is a triangle.");
}
else {
System.out.println("This is not a triangle.");
}
reader.close();
}
public static boolean isTriangle(double a, double b, double c) {
if ((a + b > c) &&
(a + c > b) && // should be a + c > b
(b + c > a)) {
return true;
}
return false;
}
}
Он очень простой, но не работает и причина в какой-то странной скрытый символ, откуда я не знаю.
Вот вывод JUnit:
And here what I see if I double click on it:
введите описание изображения здесь
На первом изображении он выглядит как дополнительный "\ n", но на втором он не появляется. Кроме того, если я добавлю его вручную, появится та же ошибка, хотя теперь второе изображение будет тем, которое показывает, что есть дополнительный \ n.