Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring NullPointerException无法调用null对象的方法_Spring_Jpa_Spock - Fatal编程技术网

Spring NullPointerException无法调用null对象的方法

Spring NullPointerException无法调用null对象的方法,spring,jpa,spock,Spring,Jpa,Spock,我正在尝试编写一个简单的测试,它将使用服务测试我的所有crud操作问题是我不知道为什么会出现此错误,甚至无法运行单个测试 @SpringBootTest class EpisodeServiceTest extends Specification { @Autowired private EpisodeService episodeService def "should create episode and save in in the database"() {

我正在尝试编写一个简单的测试,它将使用
服务测试我的所有crud操作
问题是我不知道为什么会出现此错误,甚至无法运行单个测试

@SpringBootTest
class EpisodeServiceTest extends Specification {

    @Autowired
    private EpisodeService episodeService

    def "should create episode and save in in the database"() {
        when:
        Episode episode = new Episode("title", "description")

        and:
        episodeService.addEpisode(episode)

        then:
        episode == episodeService.findById(episode.id)
    }
}
@服务
@交易的
公共类情节服务{
私人书信子库书信子库;
@自动连线
公共EpiodeService(EpiodeRepository EpiodeRepository){
this.eposoderepository=eposoderepository;
}
公共插曲findById(长id){
返回eposoderepository.findById(id).orElse(null);
}
公共列表findAll(){
返回eposoderepository.findAll();
}
公共无效附加码(插曲){
如果(插曲!=null)
情节库。保存(情节);
}
公共id(长id){
事件集=findById(id);
如果(插曲!=null)
情节库。删除(情节);
}
}

存储库只是一个简单的存储库,它扩展了
JpaRepository
,我的问题是如何使用spock测试jpa实体?我做错了什么,因为我第一次尝试这样做,早些时候我用JUnit编写了一个简单的测试,但我想尝试spock。

解决方案是将此依赖项添加到maven中

        <dependency>
            <groupId>org.spockframework</groupId>
            <artifactId>spock-spring</artifactId>
            <version>1.3-groovy-2.5</version>
            <scope>test</scope>
        </dependency>

org.spockframework
斯波克弹簧
1.3-groovy-2.5
测试

仅仅添加
spock核心是不够的,解决方案是将这种依赖性添加到maven中

        <dependency>
            <groupId>org.spockframework</groupId>
            <artifactId>spock-spring</artifactId>
            <version>1.3-groovy-2.5</version>
            <scope>test</scope>
        </dependency>

org.spockframework
斯波克弹簧
1.3-groovy-2.5
测试

仅添加
spock核心是不够的

您的测试类缺少注释
@RunWith(SpringRunner.class)


您的测试类缺少注释
@RunWith(SpringRunner.class)


提供有关
eposoderepository
声明和配置的信息。数据源是为测试配置的吗?@Mark正如我上面提到的,eposoderepository是一个简单的接口,它扩展了JpaRepository,仅此而已。Datasource在docker compose中,它只是一个普通的MySQL。你能提供整个stacktrace吗?@SimonMartinelli stacktrace中的异常只是
java.lang.NullPointerException:无法调用null对象上的addEpisode()方法,当然,在代码中,这就是第18行,这就是加法器法。没有更多。请提供一个完整的,有太多的变量在这个问题上没有它,太多的猜测。问题可能出现在repository类或Incide类中(例如,在其
equals
方法中)。如果没有人能重现你的问题,答案只不过是或多或少受过教育的猜测。大多数程序员都喜欢分析,而不是猜测。请提供有关
eposoderepository
声明和配置的信息。数据源是为测试配置的吗?@Mark正如我上面提到的,eposoderepository是一个简单的接口,它扩展了JpaRepository,仅此而已。Datasource在docker compose中,它只是一个普通的MySQL。你能提供整个stacktrace吗?@SimonMartinelli stacktrace中的异常只是
java.lang.NullPointerException:无法调用null对象上的addEpisode()方法,当然,在代码中,这就是第18行,这就是加法器法。没有更多。请提供一个完整的,有太多的变量在这个问题上没有它,太多的猜测。问题可能出现在repository类或Incide类中(例如,在其
equals
方法中)。如果没有人能重现你的问题,答案只不过是或多或少受过教育的猜测。大多数程序员都喜欢分析,而不是猜测。
@RunWith
注释在这里是不必要的,
@springbootest
注释肯定足够了,因为测试现在应该通过了。
@RunWith
注释在这里是不必要的,
@SpringBootTest
注释已经足够了,因为测试现在应该通过了。
@SpringBootTest
@RunWith(SpringRunner.class)
class EpisodeServiceTest extends Specification {