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

用spring cli运行Spock规范测试

钱华晖
2023-03-14

我在看一个例子,从沃尔的春靴在行动书。它是一个用Groovy编写的简单web应用程序。该项目使用Spring CLI构建、运行和测试,不使用gradle构建文件,并使用grabs.groovy文件提供H2和Thymeleaf依赖项。有两个测试班。第一个是JUnit测试,第二个是Spock规范。JUnit测试文件是:

import org.springframework.test.web.servlet.MockMvc
import static org.springframework.test.web.servlet.setup.MockMvcBuilders.*
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*
import static org.mockito.Mockito.*

class ReadingListControllerTest {

    @Test
    void shouldReturnReadingListFromRepository() {
        List<Book> expectedList = new ArrayList<Book>()
        expectedList.add(new Book(
                id: 1,
                reader: "Craig",
                isbn: "9781617292545",
                title: "Spring Boot in Action",
                author: "Craig Walls",
                description: "Spring Boot in Action is ..."
            ))

        def mockRepo = mock(ReadingListRepository.class)
        when(mockRepo.findByReader("Craig")).thenReturn(expectedList)

        def controller = new ReadingListController(readingListRepository: mockRepo)

        MockMvc mvc = standaloneSetup(controller)
                        .build()
        mvc.perform(get("/"))
            .andExpect(view().name("readingList"))
            .andExpect(model().attribute("books", expectedList))

    }

}
import org.springframework.test.web.servlet.MockMvc
import static org.springframework.test.web.servlet.setup.MockMvcBuilders.*
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*
import static org.mockito.Mockito.*

class ReadingListControllerSpec extends Specification {

  MockMvc mockMvc
  List<Book> expectedList

  def setup() {
    expectedList = new ArrayList<Book>()
    expectedList.add(new Book(
      id: 1,
      reader: "Craig",
      isbn: "9781617292545",
      title: "Spring Boot in Action",
      author: "Craig Walls",
      description: "Spring Boot in Action is ..."
    ))

    def mockRepo = mock(ReadingListRepository.class)
    when(mockRepo.findByReader("Craig")).thenReturn(expectedList)

    def controller = 
        new ReadingListController(readingListRepository: mockRepo)
    mockMvc = standaloneSetup(controller).build()
  }

  def "Should put list returned from repository into model"() {
    when:
      def response = mockMvc.perform(get("/"))

    then:
      response.andExpect(view().name("readingList"))
              .andExpect(model().attribute("books", expectedList))
  }

}
ReadingListControllerSpec.groovy: 5: unable to resolve class org.mockito.Mockito
 @ line 5, column 1.
   import static org.mockito.Mockito.*
   ^

我不擅长编写Spock测试,所以我不确定问题是什么。

共有1个答案

葛阳
2023-03-14

我也遇到了同样的问题,但我还是解决了这个问题,方法是从ReadingListControllerSpec.groovy文件中删除导入,并完全限定mock方法,而不是使用导入....

即org.mockito.mockito.mock(readinglistrepository.class)

 类似资料:
  • Spock规范如下所示: 是一个测试记录列表,对于该列表的每个成员,方法将按顺序运行。我想要的是,列表的前k个成员运行一个线程,下面的k个成员在第二个线程中运行,等等...理论上,使用Executors框架和类(因为Spock依赖于JUnit),这可以相对容易地完成。 然而,问题是如何将更小的注入到具有方法的类中,因为Spock不允许构造函数,而JUnitCore需要类名(具有测试/规范的类),而

  • 在以前的一个项目中,我使用Spock测试框架对Java代码进行单元测试。我发现这非常有效,所以我尝试将Spock测试添加到我当前的项目中,该项目使用Maven作为构建工具(前一个项目使用Gradle)。虽然我可以让Maven编译我的Spock测试(使用),但我无法让Maven运行这些测试。 我做了一个简单的例子来演示我在两个文件中的问题: null 当我执行(或)时,我希望运行单个单元测试并失败。

  • 我有数百个用Spock编写的测试规范。所有这些都是功能测试,可以独立运行。但我遇到了一种情况,在运行其他测试之前,我需要运行一个特定的测试。 使用Junit测试套件很容易实现这一点,而且在Eclipse中非常简单。但由于我所有的测试都是groovy测试,所以在Spring IDE中为spock测试(用groovy编写)创建测试套件并不容易。 有人能分享一些关于我们如何创建测试套件、运行一些特定测试

  • 我正在尝试用Maven/Intellij运行spock测试。但是maven和intellij都没有接受测试类。它肯定会拾取类,但不会在类中执行任何测试。 2)Surefire插件配置正确,因为它会拾取文件进行测试 3)target/test-classs文件夹中生成的测试类 我需要帮助我在这里错过了什么。

  • 并且我使用JUnit和Mockito为该方法编写了一个单元测试。这些测试正在工作: 现在我尝试使用Groovy和Spock框架编写这些测试。我写了如下规范: 这个测试起作用了。但是,当我想通过在语句或我得到一个错误。第36行位于

  • 非常感谢您的任何建议,