Java 如何使用EasyMock和PowerMock模拟字节数组
我就是这样说的:Java 如何使用EasyMock和PowerMock模拟字节数组,java,easymock,powermock,Java,Easymock,Powermock,我就是这样说的: byte[] mockByteArray = PowerMock.createMockAndExpectNew(byte[].class, 10); 但我遇到了运行时异常:找不到对象方法!如何修复它 [编辑] 我想模拟一个RandomAccessFile.read(字节[]缓冲区): 如果要测试filecuter方法,不需要模拟byte数组。您必须模拟RandomAccessFile。例如,像这样(很抱歉出现一些小语法错误,我现在无法检查): 为什么要模拟字节数组?为什么不创
byte[] mockByteArray = PowerMock.createMockAndExpectNew(byte[].class, 10);
但我遇到了运行时异常:找不到对象方法!如何修复它
[编辑]
我想模拟一个RandomAccessFile.read(字节[]缓冲区)
:
如果要测试
filecuter
方法,不需要模拟byte
数组。您必须模拟RandomAccessFile
。例如,像这样(很抱歉出现一些小语法错误,我现在无法检查):
为什么要模拟字节数组?为什么不创建一个普通的字节数组呢?因为我想模拟一个RandomAccessFile.read(byte[]buffer):
byte[]fileCutter(RandomAccessFile RandomAccessFile,long position,int filePartSize)抛出IOException{byte[]buffer=new byte[filePartSize];RandomAccessFile.seek(position);RandomAccessFile.read(buffer);return buffer;}
我是新手,不知道如何正确编辑代码。请原谅,:(我尝试了你的建议,但失败了。因为我需要在文件切割器中创建一个字节数组,就像byte[]buffer=new byte[10];
这与expectedRead
不同,因此我遇到了意外的调用异常。这就是我必须模拟字节数组的原因。我已经解决了这个问题!实际上我不必模拟字节数组。这是我的新代码:EasyMockRandomAccessFile.expect(mockRandomAccessFile.read((byte[])EasyMock.anyObject())。andReturn(3);
(byte[])EasyMock.anyObject()
将帮助我匹配filecuter
方法中调用的任何字节数组。现在我已经完成了测试!非常感谢您的帮助!:如果您的问题得到解决,最好将答案标记为已接受。
byte[] fileCutter(RandomAccessFile randomAccessFile, long position, int filePartSize) throws IOException{
byte[] buffer = new byte[filePartSize];
randomAccessFile.seek(position);
randomAccessFile.read(buffer);
return buffer;
}
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, ..., ...);