2017-01-28 8 views
1

У меня возникла проблема с началом тестирования Java-кода с помощью spock. Когда я запускаю тест есть ошибка:Спок для тестирования Java в Intellij

0 test classes found in package '<default package>' 
Process finished with exit code -2 
Empty test suite. 

Я использую IntelliJ и Maven, положить зависимости в п файл:

<?xml version="1.0" encoding="UTF-8"?> 
<project xmlns="http://maven.apache.org/POM/4.0.0" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 

    <groupId>myGroup</groupId> 
    <artifactId>mySecondArg</artifactId> 
    <version>1.0-SNAPSHOT</version> 
    <build> 
     <plugins> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-compiler-plugin</artifactId> 
       <configuration> 
        <source>1.8</source> 
        <target>1.8</target> 
       </configuration> 
      </plugin> 
     </plugins> 
    </build> 

    <dependencies> 
     <dependency> 
      <groupId>org.spockframework</groupId> 
      <artifactId>spock-core</artifactId> 
      <version>1.1-groovy-2.4-rc-3</version> 
     </dependency> 
     <dependency> 
      <groupId>org.codehaus.groovy</groupId> 
      <artifactId>groovy-all</artifactId> 
      <version>2.4.7</version> 
     </dependency> 
    </dependencies> 
</project> 

создал мой простой класс Person: (в Java)

public class Person { 
    private String name; 
    private String surname; 
    private String age; 

    public Person(String name, String surname, String age){ 
     this.name = name; 
     this.surname = surname; 
     this.age = age; 
    } 
} 

и тест (класс спока):

class PersonTest { 

    def "my Test"(){ 
     when: 
      Person person = new Person(name: name, surname: surname, age: age) 
     then: 
      person.name == name 
      person.surname == surname 
      person.age == age 
     where: 
      name | surname | age 
      "AAA" | "BBB" | 22 
      "HHH" | "CCC" | 30 
      "BBB" | "SSS" | 40 
    } 
} 

мой проект дерево выглядит следующим образом:

enter image description here

Я попытался следующие несколько учебников, но, вероятно, я что-то пропустил. Что такое проблема с моим проектом и почему тест не работает?

+0

Не могли бы вы поделиться полный POM смотреть в список всех подключаемых модулей и зависимостей. Также какую команду 'mvn' вы использовали для сборки? – nullpointer

+0

Я отредактировал мой пост – barmi

+0

действительно посмотрел http://stackoverflow.com/questions/21194523/can-spock-mock-a-java-constructor – nullpointer

ответ

0

Ваш тест должен extends Specification

class PersonTest extends Specification { 

Вы пишете тест в Groovy так что лучше практика, чтобы держать их в SRC/тест/заводной

+0

Это помогает много, тестовые работы! Еще одна проблема: «Groovyc: невозможно разрешить класс Person». Что мне делать? – barmi

0

Две вещи -

  1. Убедитесь, что ваш pom.xml имеет обязательный плагин, как указано на странице official sample

    <!-- Mandatory plugins for using Spock --> 
    <plugin> 
        <!-- The gmavenplus plugin is used to compile Groovy code. To learn more about this plugin, visit https://github.com/groovy/GMavenPlus/wiki --> 
        <groupId>org.codehaus.gmavenplus</groupId> 
        <artifactId>gmavenplus-plugin</artifactId> 
        <version>1.4</version> 
        <executions> 
        <execution> 
         <goals> 
         <goal>compile</goal> 
         <goal>testCompile</goal> 
         </goals> 
        </execution> 
        </executions> 
    </plugin> 
    
  2. Все тесты должны расширяющие spock.lang.Specification, как также было предложено @Bhushan

    import spock.lang.Specification 
    
    class PersonTest extends Specification { 
    

Полезные ссылки - Spock Official Eaxmple

+0

Правильно использовать 'Person person = new Person (« a »,« b »,« c »)'? У меня есть ошибка 'неспособная разрешить класс Person' – barmi

+0

@barmi - можете ли вы подробно описать сбой, а также предложите следовать по другой теме для последующих сбоев. – nullpointer