Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/395.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用EasyMock和PowerMock模拟字节数组_Java_Easymock_Powermock - Fatal编程技术网

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, ..., ...);