Модульное тестирование FaceDetector Google мобильное зрение java.lang.UnsupportedOperationException

я настраиваю модульный тест для метода класса, который включает FaceDetector из библиотеки мобильного зрения Google, но я получил java.lang.UnsupportedOperationException, но он работает при работе на реальном устройстве Android. можно ли протестировать код FaceDetector? Спасибо

public class HeadDetector
{

    private Bitmap facePicture;

    private Context context;

    private RectF headRectangle=new RectF();

    public HeadDetector(Bitmap facePicture,Context context) {

        this.facePicture = facePicture;
        this.context = context;
    }


    public RectF generateHeadRectangle() {

        FaceDetector faceDetector = new
            FaceDetector.Builder(context).setTrackingEnabled(false)
            .build();

    Frame frame = new Frame.Builder().setBitmap(facePicture).build();
    // when unit test hit below code
    //java.lang.UnsupportedOperationException
    SparseArray<Face> faces = faceDetector.detect(frame);

    if (faces.size()>0){

        Face face = faces.get(0);

        headRectangle = new RectF(0,0,face.getWidth(),face.getHeight());
    }

    return headRectangle;

  }

}

public class HeadDetectorTest  {

    @Test
    public void shouldGenerateHeadRectangle(){

    Context context = InstrumentationRegistry.getInstrumentation().getTargetContext();

    HeadDetector headDetector = new HeadDetector( TestHelper.createBitmapTest(context), context);

    RectF rectF = headDetector.generateHeadRectangle();

    assertNotEquals(rectF.width(),0.0f);

    assertNotEquals(rectF.height(),0.0f);

    assertThat(rectF.height(),greaterThan(rectF.width()));

}

}
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
0
53
1

Ответы 1

что UnsupportedOperationException, скорее всего, вызван попыткой открыть аппаратную камеру, которая недоступна. поэтому вы можете аннотировать тест с помощью @RequiresDevice:

@RequiresDevice
public class HeadDetectorTest  {
    ...
}

Indicates that a specific test should not be run on emulator.

It will be executed only if the test is running on the physical android device.

или подключить веб-камеру к эмулятору, чтобы предоставить ему то, что он требует.

просто сфокусируйте веб-камеру на изображении какой-нибудь головы, чтобы предоставить примерные данные :)

Другие вопросы по теме