Вы также можете реализовать свои собственные тестовые классы для InputStream или что у вас есть.
package thop;
import java.io.InputStream;
/**
*
* @author tonyennis
*/
public class MyInputStream extends InputStream {
private char[] input;
private int current;
public MyInputStream(String s) {
input = s.toCharArray();
current = 0;
}
public int read() {
return (current == input.length) ? -1 : input[current++];
}
@Override
public void close() {
}
}
Это простой InputStream. Вы даете ему строку, она дает вам строку. Если код, который вы хотите протестировать, требует InputStream, вы можете использовать его (или что-то в этом роде, хех) для подачи именно тех строк, которые хотите протестировать. Вам не понадобятся ресурсы или дисковые файлы.
Здесь я использую свой класс lame в качестве входных данных для BufferedInputStream ...
package thop;
import java.io.BufferedInputStream;
import java.io.IOException;
import java.io.InputStream;
/**
*
* @author tonyennis
*/
public class Main {
/**
* @param args the command line arguments
*/
public static void main(String[] args) throws IOException {
InputStream is = new MyInputStream("Now is the time");
BufferedInputStream bis = new BufferedInputStream(is);
int res;
while((res = bis.read()) != -1) {
System.out.println((char)res);
}
}
}
Теперь, если вы хотите убедиться, что ваша программа правильно анализирует inputStream, вы великолепны. Вы можете без труда подать ей строку, которую хотите протестировать. Если вы хотите убедиться, что тестируемый класс всегда закрывает InputStream, добавьте логическую переменную экземпляра «isOpen», установите значение true в конструкторе, установите значение false в close () и добавьте метод получения.
Теперь ваш тестовый код будет содержать что-то вроде:
MyInputStream mis = new MyInputStream("first,middle,last");
classBeingTested.testForFullName(mis);
assertFalse(mis.isOpen());