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

Spring Boot-没有Spring上下文的Spock测试

单嘉泽
2023-03-14
@Service
public class FileService {
    ....
    ....
    public Optional<FileDescr> upload(MultipartFile uploadFile){...}

    public Resource downloadFile(int linkID){...}

}
import org.junit.experimental.categories.Category
import org.springframework.mock.web.MockMultipartFile
import spock.lang.Shared
import spock.lang.Specification

@Category(WithoutSpringContext)
class FileServiceTestWithoutSpringContext extends Specification{

    @Shared
    FileService fileService = Mock()

    @Shared
    MockMultipartFile mockMultipartFile = Mock()

    def setupSpec(){

    }

    def setup(){

    }

    def clean(){

    }

    def cleanSpec(){

    }

    def "upload file"(){
        given:
            fileService.upload(mockMultipartFile) >> true
        when:
            def result = fileService.upload(mockMultipartFile)
        then:
            result==true
    }

    def "download file if exists"(){
        given:
            fileService.downloadFile(1) >> true
        when:
            def result = fileService.downloadFile(1)
        then:
            result==true
    }
}

我想用Mock测试方法,没有spring上下文。我该怎么做?现在,result变量返回null。我想设置方法的返回值。

共有1个答案

祁博雅
2023-03-14

不能用@shared注释mocks,这是没有意义的。@共享另有用途:

有时您需要在特性方法之间共享一个对象。例如,创建对象可能非常昂贵,或者您可能希望您的特性方法彼此交互。为此,声明一个@shared字段。

并进一步:

 类似资料:
  • 我使用Spock框架来运行我的测试。每个测试类上都有Spring的注释。正如我所看到的,每个测试类都需要上下文,在不同的类中运行几十个测试需要很多时间。是否有一种方法可以配置Spock测试类以在公共spring上下文下运行?

  • 我正在尝试将Cucumber集成到现有的Spring Boot项目中 当前项目是单个Maven模块 单元测试(不含Spring上下文)和集成测试(含Spring上下文)组合在同一个测试文件夹中。 我想做的是能够调整我的单元测试和集成测试。 但是一旦我添加了依赖项(为了能够在规范旁边运行Spring上下文),它就要求文件夹中的所有测试都用注释。 下面是我的测试套件,配置为获取测试规范。 是否可以将两

  • 嗨,我有一个Spring Boot(2.1.6发行版)应用程序,我正在尝试添加一些简单的集成测试到我的应用程序。首先,我创建了一个基础IntegrationTest类,如下所示: 这是我的测试方法: 有什么建议吗?

  • 我使用Spock框架和Groovy脚本来测试我的Java应用程序。对于我创建的所有类,我的项目有100%的测试覆盖率。然而,我注意到覆盖范围显示,名为“app”的主类没有得到充分测试。 这是我对App类的一个测试: 如何用Spock框架充分测试Spring Boot应用程序上下文?

  • 您好,我有一个将人员添加到团队的方法。我想为此方法编写一个测试,但我是junit/mockito测试的新手,所以我有很多问题:这是我的添加方法: 这两个实体(人员/团队)之间存在关系,这是我的测试代码,但它不起作用: 模拟组合:

  • 我想不通..出于某种原因,Spring Junit没有将我的bean添加到上下文中。请砰!! 由:org.springframework.beans.factory.nosuchBeanDefinitionException引起:没有类型为“com.api.demo.store.FileStorage”的合格bean可用:需要至少有1个bean作为autowire候选bean。依赖项注释:{@or