2015-01-22 1 views
-1

Когда я хочу проверить, нет ли возвращенной коллекции, я не нашел элегантного решения.TestNG эквивалент assertEmpty?

assertTrue(service.getSomeEntries(params).isEmpty()) 

Этот подход работает, а недостатком является то, что он теряет информацию о данных.

assertEquals(new LinkedHashSet<>(service.getSth()), Collections.emptySet()) 

Этот подход работает, он даже не меняет порядок. Но есть какой-то шаблон. Если это утверждение терпит неудачу, оно только показывает, что размер отличается. Лучше, чем ничего, но может быть лучше.

Есть ли элегантное решение этой проблемы? У меня нет каких-либо требований, я просто хочу что-то, что соответствует хотя бы одному из следующих пунктов:

  • Код более эластичен с меньшим количеством шаблонов.
  • Он предоставляет дополнительную информацию о том, что находится внутри коллекции, когда оно не пустое. (Это может быть достигнуто путем сохранения коллекции за пределами утверждения и перевода ее в текстовое объяснение того, что пошло не так, но есть ли способ сделать это только с утверждением?)
+0

Есть ли что-то не так с этим вопросом, так как я был заблокирован? Или это была просто чья-то вендетта для моей критики? Имея два вопроса, поставленных вниз, та же самая минута почти выглядит как последняя. – Vlasec

ответ

1

TestNG не поддерживает такие утверждений напрямую. Вы должны либо написать свои собственные пользовательские утверждения, либо использовать AssertJ library со многими встроенными утверждениями.

  1. собственные утверждения:

    asertThat(service).hasZeroEntries() 
            .hasEmptySth(); 
    
  2. Встроенный AssertJ утверждения

    assertThat(service.getSth()).containsExactly(...)  // 1.) 
              .doesNotContainDuplicates(); // 2.) 
    

    Где

    1. будет проверить, содержит ли коллекция только указанные элементы в определенный порядок. Если вы определите элементы без дубликатов, у вас будет именно то поведение, которое вы хотите.
    2. Проверяет наличие дубликатов. В этом случае это не имеет значения, но использование разных утверждений может быть ценным в вашем случае.
+0

Спасибо за информацию, я довольно не уверен, могу ли я действительно использовать ее в проекте, над которым я работаю (возможно, нет), но всегда приятно изучать новые вещи и альтернативы. Это не отвечает на мой вопрос, но я считаю этот ответ полезным. – Vlasec

+0

Как я уже сказал в первом предложении, в TestNG нет альтернативы. – Crazyjavahacking

+0

Ну, я просто хочу знать хорошее обходное решение с TestNG. Если я ожидаю, что коллекция будет пустой, мне очень любопытно, что внутри, если утверждение терпит неудачу. – Vlasec

Смежные вопросы