当前位置: 首页 > 知识库问答 >
问题:

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

公孙高畅
2023-03-14

当我运行junit测试时,控制台打印此异常:

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)

基本测试对象如下

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);
    }
}

我的项目是JavaEE项目,使用maven管理lib,使用spring-manage-beans。

我的开发环境是:
Mac OS X Yosetime 10.10.4
EclipseJavaEE IDE for Web Developers(版本:Mars Release(4.5.0))
Maven插件(从Eclipse安装-

我猜这是日食 junit 和项目 junit 配置之间的冲突,但我不确定。

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

共有3个答案

乔凯康
2023-03-14

这样做:

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("file:src/main/webapp/WEB-INF/applicationContext.xml")
@WebAppConfiguration
public class StaffInfoServiceImplTest { ..Your Code.. }
胡天佑
2023-03-14

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

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

左华灿
2023-03-14

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

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

在我使用旧版本JUnit之前遇到问题的另一个工作区/项目中。

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

 类似资料:
  • 我在Eclipse中经常遇到这个错误: 生成期间出错。对project project运行生成器“集成外部工具生成器”时出错。找不到生成器启动配置。对project project运行生成器“集成外部工具生成器”时出错。找不到生成器启动配置。

  • 问题内容: 最近,我接受了公司的采访,他们给了我一个编码问题。我得到了与纸牌有关的程序,其中一种方法是将纸牌洗牌。因此,我将该程序编写为: 在上面的代码中,我引发了我最怀疑的 IllegalArgumentException 。在什么情况下实际上应该抛出运行时异常?我们是否应该实际抛出运行时异常? 谢谢 问题答案: 我们是否应该实际抛出运行时异常? 是的,我们应该。运行时异常有特定的用途-它们发出

  • 我想从intelliJ运行我的spring-boot应用程序,而不是使用终端,但它不允许,它只是抛出了一大堆错误,而当我从中的终端运行时,应用程序会按预期启动。 通过intelliJ(右上角的run按钮)运行时: 但当我去跑的时候: 在终端中,我的应用程序启动,我可以开始对服务器进行http调用。

  • 错误日志表明,我的项目中使用的版本与更新的newrelic JavaAgent中的版本之间存在冲突。在谷歌上,我发现了这两个SO链接,第一个和第二个类似的问题。根据给出的答案,我补充道 然后这个错误就消失了。 但在再次运行时,我开始出现以下异常:com.newrelic.agent.config.ConfigurationException 我想知道这里出了什么问题/缺少了什么?

  • 我已经完成了Eclipse Maven TestNG,我打算运行Selenium测试用例。 这是我的POM文件: 现在,当我尝试运行Maven测试时,我得到以下错误: 有人能告诉我我错过了什么吗。 提前谢谢。