Filtrowanie listy obiektów po polu - test

0

Hej,
mam pytanie o test jednostkowy.
Chodzi ogólnie o testowanie metody która zwraca Predicate którego zadaniem jest przefiltrowanie w streamie obiektów po jakimś propertasie danego obiektu.
Patrząc na przykład z tego linka: https://www.baeldung.com/java-streams-distinct-by
i tej metody:

public static <T> Predicate<T> distinctByKey(
    Function<? super T, ?> keyExtractor) {
  
    Map<Object, Boolean> seen = new ConcurrentHashMap<>(); 
    return t -> seen.putIfAbsent(keyExtractor.apply(t), Boolean.TRUE) == null; 
}

zastanawiam się jak napisać test jednostkowy który będzie testował tylko ta metodę. Wiem, że można stworzyc kolekcje i zrobić filtra na streamie, ale czy jest jakiś inny sposób który by pozwolił stricte przetestować tą jedną metodę bez angażowania w to streama i filtra?

Pozdr

0

No nie mam pojecia :P

import java.util.*;
import java.util.concurrent.*;
import java.util.function.*;

public class WriteOnlyPL {
    
  public static <T> Predicate<T> distinctByKey(Function<? super T, ?> keyExtractor) {
    Map<Object, Boolean> seen = new ConcurrentHashMap<>(); 
    return t -> seen.putIfAbsent(keyExtractor.apply(t), Boolean.TRUE) == null; 
  }
    
  public static void main(String args[]) {
    var p = distinctByKey(a -> a);
    System.out.println("WriteOnly.pl" + p.test(1) + ", " + p.test(2) + ", " + p.test(2) + ", " + p.test(3) + ", " + p.test(3) + ", " + p.test(3));
  }
}
1

No Predicate<T> to obiekt javowy jak każdy inny. Możesz po prostu wywołać metodę test() na nim, i dostaniesz True lub False°

1 użytkowników online, w tym zalogowanych: 0, gości: 1