Как сделать скалярное тестирование с Android? - PullRequest
7 голосов
/ 29 октября 2011

Я не уверен, что «скалярное тестирование» является правильным термином для него, но я имею в виду тесты, которые не являются булевыми «провал или успех».Проблема, над которой я работаю, - это хроматический тюнер для Android:

http://code.google.com/p/androidtuner/

И я хочу проверить алгоритм, запустив несколько файлов wav и обработав полученный график шага.Цель состоит в том, чтобы определить скалярный результат теста как нормализованную сумму x-minus-y-squared-sum, где x - обнаруженный шаг, а y - ожидаемый шаг.Таким образом, идеальный тестовый прогон был бы равен 0, но более реалистично я хотел бы настроить алгоритм и посмотреть, улучшится ли он во всех тестовых примерах.

* 1007не логическое значение?Позволяет ли это структура тестирования Android?Как мне интегрировать какое-либо решение с Eclipse?

Моя текущая идея - просто обойти все и использовать adb для получения файлов, сгенерированных после выполнения каждого теста.Хотя это не слишком круто.

Ответы [ 3 ]

1 голос
/ 10 ноября 2011

Меня поражает, что юнит-тест - это не тот инструмент, который вы решаете здесь. По своей природе структуры модульного тестирования предназначены для получения истинных / ложных результатов.

Если все, что вы хотите сделать, это создать некоторые метрики, протестировав вызов вашего алгоритма с различными входными данными, вы можете рассмотреть возможность написания собственного подкласса Instrumentation. Это то, что сам Android использует для запуска ваших модульных тестов на устройстве.

Instrumentation позволит вам вызывать ваши службы / действия с любыми наборами данных, которые вам нужны, и вы можете создать результаты Bundle, чтобы суммировать результаты.

Кроме того, вы можете вызывать инструментарий из АБР, как набор тестовых случаев.

0 голосов
/ 10 ноября 2011

Модульное тестирование не очень подходит в этом случае.Результатом модульного теста является «пройти / не пройти», поэтому вам нужно будет установить порог (предел ошибки), который определяет, что такое проход.Это дает некоторые результаты, то есть вы можете сравнивать количество проходов / неудач между прогонами, но вы также теряете довольно много информации в процессе.

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

Кроме этого, я не могу представить себе фреймворк, который делает именно то, что вам нужно.

0 голосов
/ 03 ноября 2011

Я думаю, вы можете сделать это с новыми функциями JUnit4.

Напишите правило, которое выполняет @Before и @After каждый раз: JUnit Kungfu slide 34

Напишите параметризованный тест, который вычисляет результат: JUnit Kungfu slide 23

Если вы работаете с электронной таблицей, вы можете заполнить электронную таблицу такими значениями, как текущее значение;max

import static org.hamcrest.MatcherAssert.*;
import static org.hamcrest.Matchers.*;
import static org.junit.matchers.JUnitMatchers.*;

import java.util.Arrays;
import java.util.Collection;

import org.hamcrest.Matchers;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
import org.junit.runners.Parameterized.Parameters;

@RunWith(Parameterized.class)
public class ParameterizedTest {

    private final int min;
    private final int max;
    private final int current;


    @Parameters
    public static Collection<Object[]> data() {
        return Arrays.asList(new Object[][] {
            { -1 , -10, -6 },
            { -2 , -11, -7 },
            { -3 , -12, -8 },
            { -4 , -13, -9 },
            { -5 , -14, -10 }
        });
    }

    public ParameterizedTest(int current, int expectedMin, int expectedMax) {
        this.current = current;
        this.min = expectedMin;
        this.max = expectedMax;

    }


    @Test
    public void testName() throws Exception {
        int yourNewValue = YourNormalizer.normalize(current);
        assertThat(yourNewValue, both(greaterThan(min)).and(lessThanOrEqualTo(max)));
    }
}

Я не знаю другого способа проверки данных.HF

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...