Так стримы не надо тестировать, их тестируют разработчики JVM. Надо поведение программы тестировать.
А если есть метод, принимающий, допустим, коллекцию, над элементами которой проводятся операции или через стрим, или через цикл, то тестироваться он будет совершенно одинаково, потому что интерфейс метода ни хрена не меняется от того, стрим там или foreach-loop внутри.
Ну не сами стримы. В принципе я представляю так: стрим преобразует множество А во множество В. И в принципе у стрима частенько бывает как минимум несколько различных результатов трансформации. Тестировщицким языком - входные данные можно разбить на классы эквивалентности, где для каждого класса есть своя "особенность" при трансформации. Или с позиции написания тестов - "для каждого из классов эквивалентности нужен отдельный тест".
В мире без стримов, мы выбираем представителей, пишем по 1 тесту на каждого, и смотрим на покрытие. Если остались непокрытые места - значит что-то не учли. Если избыточное покрытие - возможно код можно оптимизировать. В общем какие-то есть метрики и признаки.
А в стриме - любой один тест покрывает 100% кода. И как искать пропущенные ветви?