Better way to assert correct return values in Groovy I have written a function that returns me the duplicates of a list:

static List&lt;SomeClass&gt; findDuplicateElements(List&lt;SomeClass&gt; myObjects) {
    List&lt;SomeClass&gt; duplicates = myObjects
    .groupBy { it.someAttribute }
    .findAll { it.value.size() &gt; 1 }
    .collect { it.value }
    .flatten()

    assert duplicates.size() != 1
    duplicates
}


The list cannot have the size 1 because if no duplicates are found it must be empty else if there are duplicates it must me at least 2 elements.

Without that check I would do it this way without having to create any new variables:

static List&lt;SomeClass&gt; findDuplicateElements(List&lt;SomeClass&gt; myObjects) {
    myObjects
    .groupBy { it.someAttribute }
    .findAll { it.value.size() &gt; 1 }
    .collect { it.value }
    .flatten()
}


When using assert, is there any way to avoid saving the result in the duplicates variable and returning it at the end?
You can use with to do things inline without declaring another variable:

List list = [
  [first: "foo", last: "bar"],
  [first: "baz", last: "qux"],
  [first: "baz", last: "bar"]
]

List findDuplicateElements(myObjects) {
   myObjects
   .groupBy { it.last }
   .findAll { it.value.size() &gt; 1 }
   .collect { it.value }
   .flatten()
   .with {
     assert it.size() != null
     it
   }
}

assert findDuplicateElements(list).size() == 2