Мне нужна помощь, чтобы наилучшим образом выполнить модульный тест на метод сохранения и чтения объекта. Это простой объект, здесь конструктор:Junit Test для метода сохранения и чтения объекта
public Bill(String bname, Double bamount, Date bdate, String bfrequency){
this.billName = bname;
this.billAmount = bamount;
this.billDueDate = bdate;
this.frequency = bfrequency;
}
я реализовал интерфейс, который определяет для чтения и сохранить метод, как так
public interface IBill {
public void save(Bill bill) throws IOException;
public Bill read() throws IOException;
И нести со мной, это конкретная реализация выше интерфейс
public class BillSvcImpl implements IBill {
@Override
public void save(Bill bill) throws IOException {
FileOutputStream fOut = null;
ObjectOutputStream oOut = null;
try {
fOut = new FileOutputStream("firstbill.ser");
oOut = new ObjectOutputStream(fOut);
oOut.writeObject(bill); //serializing Bill object
} catch (IOException e) {
e.printStackTrace();
try{
oOut.flush();
oOut.close();
fOut.close();
}catch (IOException ioe){
ioe.printStackTrace();
}
}
}
@Override
public Bill read() {
Bill retrievedBill = null;
FileInputStream fIn = null;
ObjectInputStream oIn = null;
try{
fIn = new FileInputStream("firstbill.ser");
oIn = new ObjectInputStream(fIn);
retrievedBill = (Bill)oIn.readObject();
}catch (ClassNotFoundException cnf){
cnf.printStackTrace();
}catch (IOException e){
try{
oIn.close();
fIn.close();
}catch (IOException ioe){
ioe.printStackTrace();
}
}
return retrievedBill;
}
}
и, наконец, вот тест, который я хотел бы использовать, чтобы проверить этот метод и он не
@Before
public void setUp() throws Exception {
factory = new Factory();
}
@test
public void testSaveBill(){
IBill bill = factory.getBillInfo();
Bill nanny = new Bill("Nanny",128d,new Date(6/28/2013),"Montly");
try {
bill.save(nanny);
} catch (IOException e) {
e.printStackTrace();
}
}
@test
public void testReadBill(){
IBill rbill = factory.getBillInfo();
try {
rbill.read();
} catch (IOException e) {
e.printStackTrace();
}
}
}
Я знаю, что мой тест не правильно, поэтому, пожалуйста, помогите мне повторно написать свой тест. Сообщение об ошибке Java.lang.Exception: No runnable method
тест, вероятно, даже не компилировать, потому аннотацию, как и все классы в Java, написано '@ Test', а не' @ test'. Кроме того, не проверяйте исключения в методах тестирования. Если у вас есть исключение, вы хотите, чтобы ваш тест потерпел неудачу, а не преуспеть. Методы записи и чтения должны также вызывать исключение, а не ловить их. Вы не хотите, чтобы ваша программа продолжалась, как будто ничего плохого не произошло, когда при письме или чтении счета было выбрано исключение. И потоки должны быть закрыты, что бы ни случилось, в конце блока. –
Благодарим вас за отзыв, я должен был упомянуть, что это мой первый реальный набег на Java. Во всяком случае, я применил вашу обратную связь (изменил \ @test на \ @Test, удалил try/catch из методов чтения/записи, и тест прошел успешно. Еще раз спасибо за ваши отзывы –