2013-09-03 4 views
1

Я tyied так же, как это:Как издеваются массив байтов, используя EasyMock и PowerMock

byte[] mockByteArray = PowerMock.createMockAndExpectNew(byte[].class, 10); 

Но я получил во время выполнения исключение: метод объекта не может быть найден! Как это исправить?

[Редактировать] Я хочу издеваться RandomAccessFile.read(byte[] buffer):

byte[] fileCutter(RandomAccessFile randomAccessFile, long position, int filePartSize) throws IOException{ 
    byte[] buffer = new byte[filePartSize]; 
    randomAccessFile.seek(position); 
    randomAccessFile.read(buffer); 
    return buffer; 
} 
+2

Почему вы хотите издеваться над массивом байтов? Почему бы просто не создать обычный массив байтов? – LaurentG

+0

Поскольку я хочу издеваться над RandomAccessFile.read (byte [] buffer): 'byte [] fileCutter (RandomAccessFile randomAccessFile, long position, int filePartSize) throws IOException { byte [] buffer = new byte [filePartSize]; randomAccessFile.seek (положение); randomAccessFile.read (buffer); буфер возврата; } ' – Rekoolno

+0

Я свежий человек, и я не знаю, как правильно отредактировать код. Простите меня, :( – Rekoolno

ответ

2

Если вы хотите проверить метод fileCutter, вам не нужно издеваться над собой byte массив. Вы должны высмеять RandomAccessFile. Например, вроде этого (извините за небольшие синтаксические ошибки, я не могу проверить сейчас):

RandomAccessFile raf = EasyMock.createMock(RandomAccessFile.class); 
// replace the byte array by what you expect 
byte[] expectedRead = new byte[] { (byte) 129, (byte) 130, (byte) 131}; 
EasyMock.expect(raf.seek(EasyMock.anyInt()).once(); 
EasyMock.expect(raf.read(expectedRead)).once(); 

// If you don't care about the content of the byte array, you can do: 
// EasyMock.expect(raf.read((byte[]) EasyMock.anyObject())).once(); 

myObjToTest.fileCutter(raf, ..., ...); 
+0

Я попробовал ваше предложение, но не смог. Поскольку мне нужно создать массив байтов в 'fileCutter', например' byte [] buffer = new byte [10]; 'это не то же самое, что' expectedRead ', поэтому я получил неожиданное вызывающее исключение. Вот почему я должен издеваться над байтовым массивом. – Rekoolno

+1

Я решил проблему. Действительно, мне не нужно издеваться над байтовым массивом. Вот мой новый код: ' EasyMock.expect (matchRandomAccessFile.read ((byte []) EasyMock.anyObject())) иReturn (3); ' ' (byte []) EasyMock.anyObject() 'поможет мне сопоставить любой массив байтов , вызываемый в 'fileCutter'. Теперь я прошел свой тест! Большое спасибо за вашу помощь!: D – Rekoolno

+1

Если ваша проблема решена, было бы хорошей формой отметить ответ как Acce pted. –

Смежные вопросы