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

使用展开时,Spring靴和Spock失效

权兴为
2023-03-14

我正在用Spring-Boot建立一个演示项目。对于实体持久性,我使用Spring生成的基于接口的存储库实现:

@Repository
public interface MovieRepository extends JpaRepository<Movie, Long> {

    List<Movie> findByNameContaining(String name);
    List<Movie> findByRelease(LocalDate release);
    List<Movie> findByReleaseBetween(LocalDate start, LocalDate end);
    List<Movie> findByNameContainingAndRelease(String name, LocalDate release);
}
@RunWith(SpringRunner.class)
@ContextConfiguration
@SpringBootTest
class MovieRepositoryTest extends Specification {

    @Autowired
    MovieRepository movieRepository

    @Test
    def findByNameContaining_shouldFindCorrectMovies() {
        given:
        movieRepository = this.movieRepository

        when:
        def result = movieRepository.findByNameContaining("Iron Man")

        then:
        result.size() == 3
    }
}
@Test
@Unroll
def findByNameContaining_shouldFindCorrectMovies() {
    given:
    movieRepository = this.movieRepository

    when:
    def result = movieRepository.findByNameContaining(query)

    then:
    result.size() == expected

    where:
    query       ||  expected
    "Iron Man"  ||  3
    "Hulk"      ||  1
    "Thor"      ||  3
    "Avengers"  ||  3
    "Thanos"    ||  0
    ""          ||  20
}
[INFO] Running com.spring.boot.demo.repositories.MovieRepositoryTest
[ERROR] Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 0.003 s <<< FAILURE! - in com.spring.boot.demo.repositories.MovieRepositoryTest
[ERROR] initializationError(com.spring.boot.demo.repositories.MovieRepositoryTest)  Time elapsed: 0.003 s  <<< ERROR!
java.lang.Exception: Method $spock_feature_0_0 should have no parameters

编辑1:嗯,这很有趣。我尝试了以下方法:*Remove@test->java.lang.exception:没有可运行的方法*Remove@runwith和@contextconfiguration->Unroll,但是没有注入movieRepository/wired:java.lang.nullpointerexception:不能在null对象上调用方法findByNameContaining()

不过,摆弄不同的注释并没有产生一个有效的场景。有猜测吗?

共有1个答案

朱天逸
2023-03-14

是的,我知道了:

runwith是罪魁祸首。在我的Edit1中,我注意到删除@test的区别。这让我想到我可能混淆了JUnit测试和Spock测试。此外,没有可运行的方法引起了我的思考。省略@runwith似乎是个好主意,因为它在其他Spock&Spring示例中几乎没有。用@contextconfiguration连接Spring bean非常好;-)。显然,@springboottest不能做到这一点?

 类似资料:
  • 所以我有一个技术挑战我需要帮助。 一个大型项目正在使用Quartz调度程序调度一个作业,使其在每晚9点运行。 然而,调度的作业需要从属性文件中读取值,使用自动布线获取一些bean等。 当我使用@autowired和@value注释时,我发现这些值为空。 问题是Quartz在spring容器外部使用创建JobDetail对象。可以在下面的代码中看到。 因此,包装的对象无法使用Spring访问属性文件

  • 我试图在Tomcat 7中部署我的Spring引导应用程序,但当我启动我的Tomcat服务器时,我会出现以下错误: 我的Pom。xml文件: 奇怪的是,当我在Tomcat 8中部署war文件时,它工作得很好! 如果有什么建议,请不要犹豫。 非常感谢。 PS:我在用JAVA 8

  • 斯波克行为怪异

  • 我想做一些spring boot应用程序。我已经创建了spring boot项目,但我有一个问题。我的控制器看起来像: 但我看到的并不是索引。html,但只有一个单词“index”。所以我想用角度。 和控制器: 我的索引。html 但它不起作用,我只在本地主机上看到错误。 如何使这个角度控制器正常工作并返回正确的视图?

  • 我使用Spring引导1.3.3和黑兹尔卡斯特我的构建看起来像: 当服务在Linux执行时,我在日志中看到: 但我在油罐里看到hazelcast-all.jar有线索吗?

  • 一定有一些方法来使用执行器的endpoint,但我不能电线他们。 我有一个JavaConfig类,如下所示 但此配置在部署过程中引发错误。 没有Spring Boot应用程序,这种布线可以完成吗?