java - JUnit类路径和ContextClassLoader不一致还是我的误解

标签 java junit classloader

我想做的是从 jar 中加载 .class 文件(编译后的类文件)作为资源流。此尝试是在 JUnit 测试用例内部进行的。

  1. 测试用例编译并运行没有问题 SO:据我所知 Assets 类应该在类路径中可用
  2. 完整的类名需要与其在文件结构中的位置一致 SO:我们可以用目录分隔符替换包名称中的点来获取类文件位置
  3. 我们可以使用 getResourceAsStream 方法访问当前类路径中的所有内容。

让我展示一些代码以便更好地理解。

package org.jboss.shrinkwrap.impl.nio.file;    
import org.jboss.shrinkwrap.api.asset.Asset;

public class FileStoreTestCase {
// (...)
@Test
public void usedSpace(){    
    final Class<?> classToAdd = Asset.class;
    final String pathToClass = new StringBuilder(classToAdd.getName().replace('.', File.separatorChar)).append(
            ".class").toString();

    final InputStream in = Thread.currentThread().getContextClassLoader().getResourceAsStream(pathToClass);

}

问题是在上面的代码中“in”变量始终为空。你知道为什么吗?我怎样才能让它工作?

感谢您的任何意见。

最佳答案

尝试使用replace('.', '/'),​​即使用'/'而不是File.separatorChar

关于java - JUnit类路径和ContextClassLoader不一致还是我的误解,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14865831/

相关文章:

java - 游戏循环中游戏对象的设计模式

java - 使用 Clips 立即播放声音

java - 我认为java中只有一种类加载器就足够了

Java获取调用main创建的线程

java - JBoss7 : loader constraint violation with ReastEasy and httpclient with custom HttpRequestInterceptor

Java 自定义类加载器

java - 存储各种具有不同功能的对象

java - java中单引号内的当前日期

java - 从 .java 文件获取类引用以进行 JUnit 测试

java - 将单元测试标记为 JUnit 中的预期失败