Как получить различную реализацию функции верхнего уровня в Unit и InstrumentTests для Android

У меня есть файл kotlin с функцией верхнего уровня (не являющийся членом какого-либо класса). Он компилируется в класс со статической функцией в Java. Я хочу иметь различную реализацию этой функции для модульных тестов (независимой от платформы) и контрольно-измерительных тестов (производственное поведение + Espresso Idling Resource). Я могу поместить тот же файл в тот же путь для prod и тестов, но когда я положил его на тест, а androidTest – IDE увидит его как в одном исходном наборе и не может решить, какую функцию я хотел бы использовать. Поскольку я использую функции верхнего уровня, я не могу использовать DI для передачи различной реализации в тестируемый класс.

Существует ли какая-либо другая реализация класса для теста и androidTest для функций верхнего уровня?

Я пытался

sourceSets { androidTest { java.srcDirs = ['src/androidTest/java'] java.exclude('src/test/java/util/CoroutinesUi.kt') } test { java.srcDirs = ['src/test/java'] } } 

Без везения.

Solutions Collecting From Web of "Как получить различную реализацию функции верхнего уровня в Unit и InstrumentTests для Android"

Я решаю эту проблему на данный момент, создав делегат объекта, который получает реализацию, а моя функция верхнего уровня просто вызывает текущую доступную реализацию от этого делегата. В этом случае мне нужно просто сбросить реализации в @Before в базовом тесте, но получить несколько виртуальных вызовов, что в порядке.