Spring Boot Test 格式错误的URL异常:未知协议:类路径
如果在带有协议的 Spring Boot 应用程序中使用,则它按预期工作,因为 Spring Boot 注册 。例如.java.net.URL
classpath
URLStreamHandlerFactory
new URL("classpath: someFile.whatever")
但是,当此代码作为 JUnit 执行时,将引发异常。java.net.MalformedURLException: unknown protocol: classpath
似乎在为 JUnit 测试初始化 Spring 上下文时,没有注册适当的。URLStreamHandlerFactory
重现步骤:
1)创建Spring Boot Starter项目(例如,仅使用Starter Web)。
2)添加文件test.json
src/main/resources
3) 加入以下豆类:
@Component
public class MyComponent {
public MyComponent() throws MalformedURLException {
URL testJson = new URL("classpath: test.json");
System.out.println(testJson);
}
}
4)以java应用程序启动应用程序工作正常
5) 运行默认的“contextLoads”测试:
@RunWith(SpringRunner.class)
@SpringBootTest
public class SpringUrlTestApplicationTests {
@Test
public void contextLoads() {
}
}
java.net.MalformedURLException: unknown protocol: classpath
将引发异常。
在 JUnit 测试中将 URL 与类路径资源一起使用的适当方法是什么?
在实际用例中,我无法更改,因为它来自第三方库。new URL("classpath: test.json")
已尝试复制 ,以测试错误是否可能由缺少资源引起 - 未成功。test.json
src/test/resources