public FSDataInputStream getObj(String hName, Path p) throws IOException {
String myKey = pathToKey(hName, p);
FileStatus status = memoryCache.getStatus(p.toString());
if (status == null) {
status = getStatus(hName, p, "getObj");
}
if (status.isDirectory()) {
throw new FileNotFoundException("Can't open " + path
+ " because it is a directory");
}
InputStream inputStream = new InputStream(bucket, myKey,
status.getLen(), client, readAhead, inputPolicy);
return new FSDataInputStream(inputStream);
}
public class ClientTest {
MemoryCache memoryCache = mock(MemoryCache.class);
FileStatus fileStatus = mock(FileStatus.class);
@Rule
public final ExpectedException exception = ExpectedException.none();
@Test
public void getObjTest() throws Exception {
Path path = new Path("xyz://aa-bb-cc/data7-1-23-a.txt");
when(memoryCache.getFileStatus(path.toString())).thenReturn(fileStatus);
when(fileStatus.isDirectory()).thenReturn(true);
exception.expect(FileNotFoundException.class);
}
}
java.lang.AssertionError:预期测试将在org.junit.Assert.Fail(Assert.java:88)在org.junit.rules.ExpectedException.FailduetOmissingException(ExpectedException.java:263)在org.junit.rules.ExpectedException.Access$200(ExpectedException.java:106)在org.junit.rules.ExpectedException.Java:245)在ckjunit47runnerdelegateimpl.java:91)在org.powermock.modules.junit4.internal.impl.powermockjunit44runnerdelegateimpl.$powermockjunit44methodrunner.runbeforesthentesthenafters(powermockjunit44runnerdelegateimpl.java:282)在org.junit.internal.runners.methodroadie.runtest(methodroadie.java:87)在莫ckjunit44runnerdelegateimpl.java:207)在org.powermock.modules.junit4.internal.impl.powermockjunit44runnerdelegateimpl.runmethods(powermockjunit44runnerdelegateimpl.java:146)在org.powermock.modules.junit4.internal.impl.powermockjunit44runnerdelegateimpl.java:146)在.modules.junit4.internal.impl.powermockJunit44RunnerDelegateImpl.run(powermockJunit44RunnerDelegateImpl.java:122)在org.powermock.modules.junit4.common.internal.impl.junit4TestSuiteChunkerImpl.run(junit4TestSuiteChunkerImpl.java:106)在4.runner.JUnit4TestReference.run(JUnit4TestReference.java:86)在org.eclipse.jdt.internal.junit.runner.testExecution.run(testExecution.java:38)在org.eclipse.jdt.internal.junit.runner.remotetestrunner.runtest(remotetestrunner.java:459)在org.eclipse.jdt.internal.junit.runner.remotetestrunner.java:678)在.java:192)
有人能告诉我什么地方做错了吗?
方法getobj
必须在类中声明(我们在OP中看不到这一点),但让我们假设它在这个类中:
public class Foo {
private MemoryCache memoryCache;
public Foo(MemoryCache memoryCache) {
this.memoryCache = memoryCache;
}
public FSDataInputStream getObj(String hName, Path p) throws IOException {
// ...
}
}
现在,您的测试可以如下所示:
public class ClientTest {
private MemoryCache memoryCache = mock(MemoryCache.class);
private FileStatus fileStatus = mock(FileStatus.class);
@Rule
public final ExpectedException exception = ExpectedException.none();
@Test
public void getObjTest() throws Exception {
Path path = new Path("xyz://aa-bb-cc/data7-1-23-a.txt");
// create the class-under-test, supplying the mocked MemoryCache
Foo foo = new Foo(memoryCache);
// establish your expectations on the mocked classes
// for this test the expectations are:
// - memoryCache returns the mocked fileStatus
// - the mocked fileStatus 'is a' directory
when(memoryCache.getFileStatus(path.toString())).thenReturn(fileStatus);
when(fileStatus.isDirectory()).thenReturn(true);
// you expect a FileNotFoundExceptionException ...
exception.expect(FileNotFoundException.class);
// ... when you invoke getObj
foo.getObj("aString", path);
}
}
备注:
我相信我的问题有一个简单的理论答案,但我找不到。 ...我希望显示的错误消息是 ORA-20001value_error 但是,不幸的是,我得到了:
不同的是,第一个列表包含5项,而第二个列表包含3项。使用的JVM是: 问题:为什么第二段代码不抛出java.util.concurrentModificationException?
我将请求映射到类,如下所示: 有人能解释为什么我在请求中的数组没有与类A中的数组映射吗?
我正在尝试使用@Valid验证我的JPA实体,如下所示: 它工作了一段时间,但现在它停止工作,我不知道为什么。我试着在< code>persist方法中手动执行,它按预期工作: 可能会发生什么情况,或者我该如何调试?
这就是我的应用程序中测试的样子: 我怎样才能避免这种行为呢?
这个测试通过了,因为它得到的是nullpointerexception,但是,显然存在一个带有asserTrue(false)的断言错误,因此我希望它失败。 解决这个问题的最好方法是什么?解决这个问题的方法可能是下面的,但我不知道这是否是正确的方法。 第二次测试如预期的那样失败了。