Pull to refresh

Comments 7

Шутка, конечно, но правда забавно.

Не ради холивара…
Мне однажды показали Spock Framework, с тех пор с не могу без боли смотреть на JUnit.

В чём его преимущества (2-3 пункта по возможности)?

Может это, конечно, субъективно, но основные:


  • создание Mock-ов просто и наглядно,
  • assert-ы средствами языка
  • (edited) числа сразу BigDecimal, особенно актуально в финансах, где почти все данные — различные суммы.

Несколько примеров (без контекста) :


def "should get person by id"() {
  given:
    def repository = Mock(PersonRepository) {
      findById("100") >> Optional.of(new Person(id: "100"))
      findById("200") >> Optional.empty()
    }    
  when: "existing person"
      def bean = service.getPersonById("100")
  then:
      bean.id == "100"
  when: "not existing person"
      service.getPersonById("200")
  then:
      thrown NotFoundException
}

def "should find all by order id"() {
    when:
        def list = repository.findAllByOrderId(orderId)
    then:
        list.size() == size
        list.collect { it.id } == ids
        list.any { it.totalAmount == 123.45 }
    where:
        orderId | size | ids
        "ord-A" | 2    | ["100", "300"]
        "ord-B" | 1    | ["200"]
        "ord-C" | 0    | []
}

1) с использованием mockito создание моков сопоставимо по простоте с приведённым примером
2) круто, но вот язык поддерживается только один


Примеры, конечно, выразительные, но вот ограничение фреймворка возможностью писать тесты исключительно на Groovy подойдёт далеко не всем.

Sign up to leave a comment.

Articles