eclipse里用junit运行测试报错:java.lang.UnstatisfiedLinkError:no wrapj in java.libary.path

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了eclipse里用junit运行测试报错:java.lang.UnstatisfiedLinkError:no wrapj in java.libary.path相关的知识,希望对你有一定的参考价值。

参考技术A 跟junit没有关系,应该是被测试的程序缺少某个dll文件导致。
在源码中搜索“wrapj”,看看哪里用到了这个dll。

Eclipse 在运行 Spring JUnit 时抛出 java.lang.NullPointerException

【中文标题】Eclipse 在运行 Spring JUnit 时抛出 java.lang.NullPointerException【英文标题】:Eclipse throws java.lang.NullPointerException when running Spring JUnit 【发布时间】:2015-10-06 19:07:15 【问题描述】:

当我运行我的 junit 测试时,控制台打印这个 Excpetion:

java.lang.NullPointerException
at org.eclipse.jdt.internal.junit4.runner.SubForestFilter.shouldRun(SubForestFilter.java:81)
at org.junit.internal.runners.JUnit4ClassRunner.filter(JUnit4ClassRunner.java:110)
at org.junit.runner.manipulation.Filter.apply(Filter.java:47)
at org.junit.internal.requests.FilterRequest.getRunner(FilterRequest.java:34)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.createFilteredTest(JUnit4TestLoader.java:77)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.createTest(JUnit4TestLoader.java:68)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.loadTests(JUnit4TestLoader.java:43)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:444)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:675)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:382)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:192)

还有像这样的 Base 测试对象

import org.junit.runner.RunWith;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.test.context.transaction.TransactionConfiguration;
import org.springframework.transaction.annotation.Transactional;

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = 
            "classpath*:config/spring/appcontext-*.xml",
            "classpath*:config/sqlmap/*.xml"
)
@TransactionConfiguration(defaultRollback = false)
@Transactional
public abstract class AbstractTestObject 
    static 
        //DOMConfigurator.configure("target/classes/log/log4j.xml");
    

JUnit 方法是这样的:

public class StaffInfoServiceImplTest extends AbstractTestObject
    @Autowired
    StaffInfoServiceImpl service;

    @Test
    public void insertTest() 
        StaffInfo bo = new StaffInfo();
        bo.setEmail("a@b.com");
        bo.setEntId(1);
        bo.setEntStaffNum("000XXXX");
        bo.setName("julia");
        bo.setPhone("00000000");
        bo.setSerialNum("SD12233KSRONDU189342ND");
        bo.setSuperior(2321);
        bo.setDepartment("Sale");
        bo.setSingleCredit(BigDecimal.valueOf(100));
        bo.setMonthlyCredit(BigDecimal.valueOf(10000));
        SLTContext c = new SLTContext();
        c.setOperator("0000001");
        service.insertStaffInfo(bo, c);
    

我的项目是Java EE项目,使用maven管理lib,使用spring管理bean。

我的开发环境是: Mac OS X Yosetime 10.10.4 面向 Web 开发人员的 Eclipse Java EE IDE(版本:Mars Release (4.5.0)) Maven 插件(从 Eclipse 安装->安装新软件)

我猜这是eclipse junit和project junit config之间的冲突,但我不确定。

如何解决这个问题,谢谢。

【问题讨论】:

你能分享一下你的项目结构吗 @kiwi - 我看到没有可接受的答案,但我只是想知道你是否找到了解决这个问题的方法。 您使用的是什么版本的 JUnit 和 Spring? Spring 2.5.6 和 JUnit 4.4。我知道 Spring 的版本真的很旧,但我刚刚被分配到该项目。 【参考方案1】:

在执行(单个)JUnit 测试时,在 Eclipse Mars 上遇到了相同的 NPE。

我尝试创建一个全新的工作区并添加了一些测试类 + 测试方法,但使用了 Eclipse Mars(版本 4.12)附带的 JUnit 库。有了这个库,我可以在 Mars 中执行所有测试。

在我使用旧版 JUnit 之前遇到问题的其他工作区/项目中。

我认为这个旧的 JUnit 版本有问题,必须升级到新版本。

【讨论】:

【参考方案2】:

是的。我提出了一个针对 Eclipse 的错误,他们建议将我的依赖项更改为更新版本的 JUnit。

我从 JUnit 4.4 升级到 JUnit 4.9,它又开始工作了。

【讨论】:

【参考方案3】:

这样做:

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("file:src/main/webapp/WEB-INF/applicationContext.xml")
@WebAppConfiguration
public class StaffInfoServiceImplTest  ..Your Code.. 

【讨论】:

以上是关于eclipse里用junit运行测试报错:java.lang.UnstatisfiedLinkError:no wrapj in java.libary.path的主要内容,如果未能解决你的问题,请参考以下文章

在 Eclipse 中运行 JUnit 测试会引发 SecurityException

使用 plexus-compiler-eclipse 编译 java 类并将其作为 JUnit 测试运行

当我在 Eclipse 中运行 Junit 测试用例时,出现错误

Eclipse 中的 JUNIT 测试类 - java.lang.ClassNotFoundException

我在Eclipse中使用Java建立了一个简单的自动化框架,但是无法通过Junit运行Cucumber测试

eclipse中使用junit4进行测试不报错怎么回事