Поблочное тестирование TSQL

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

private static double toDouble(byte[] bs) {
    boolean onLeft = true;
    double left = 0;
    double right = 0;

    for (byte b : bs) {
        if (b == '.') {
            onLeft = false;
        } else if (onLeft) {
            left *= 10;
            left += b - '0';
        } else {
            right += b - '0';
            right /= 10;
        }
    }

    return left + right;
}

И:

 System.out.println(toDouble(new byte[] { '1', '1', '.', '1' }));

Урожайность 11,1.

9
задан Ryu 2 April 2009 в 17:33
поделиться

5 ответов

Критические части:

  • Сделайте это автоматизировало и интегрировалось с Вашей сборкой/тестом (таким образом, у Вас есть зеленый или красный цвет от Вашей сборки),
  • Помогите добавить новый тест
  • Сохраните свои тесты актуальными

Расширенный:

  • условия отказа при испытании в Вашем коде
  • удостоверьтесь, что Ваши тесты моются после себя (сценарии TSqlTest в качестве примера используют @beforeCount и @afterCount переменные для проверки очистки),
4
ответ дан 4 December 2019 в 23:41
поделиться

Хранимые процедуры. Я обычно включаю тестовые запросы в комментарии в заголовке SP и записываю корректные результаты и времена запроса. Это все еще оставляет его как ручное осуществление, как бы то ни было.)

Функции. Снова, поместите SQL-операторы в заголовок с той же информацией.

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

Это - все еще ручной процесс, как бы то ни было. Но так как я думаю, что нужно намеренно разработать артефакты SQL, которые будут полностью разъединены (например, никакой SPS вызова SPS, то же с функциями и другим ударом против триггеров, по моему скромному мнению), это относительно менее сложно.

2
ответ дан 4 December 2019 в 23:41
поделиться

Вы попытались использовать API red-gate.com?

У них есть набор продуктов для сравнения вещей в SQL Server, и API позволяет фактически ту же функциональность программно.

http://help.red-gate.com/help/SQLDataCompareAPIv5/4/en/GettingStartedAPI.html

0
ответ дан 4 December 2019 в 23:41
поделиться

Я использовал базу данных, тестирующую, который встроен в Выпуск Базы данных Visual Studio 2008 года на проекте здесь. Это работает хорошо, но чувствует больше как стороннее устройство, повышающее характеристики, к Visual Studio, чем собственный компонент. Некоторые боли, которые я чувствовал с ним:

  • Поскольку жизни кода SQL в res файлах и единственном файле кода могут включать несколько тестов, не столь легко искать тесты на основе таблицы/имен столбцов.
  • Поскольку несколько тестов живут в тех же файлах кода, у Вас есть некоторые раздражающие коллизии имени переменной (например, если у Вас есть два теста в единственном файле кода, все утверждения для тех тестов должны иметь уникальные имена; Это означает, что Ваши имена утверждения будут, вероятно, похожи на "testname_assertionname", который действительно не должен быть необходимым).
  • Рефакторинг Ваших тестов не легок - например, если Вы хотите переместить тест от одного файла кода до другого, самый легкий путь состоит в том, чтобы создать тест с нуля в новом файле, потому что существуют остатки теста, рассеянного о res файле и файле кода.

Все это сказало, когда я запустил с - Это действительно работает хорошо. К сожалению, мы еще не добавили эти тесты к нашему непрерывному серверу интеграции, таким образом, я не могу прокомментировать, как легкий это должно автоматизировать выполнение этих тестов. Мы используем TFS для CI, и я предполагаю, что автоматизация тестов работала бы очень похожая на автоматизацию стандартных модульных тестов; Другими словами, кажется, что должна быть командная строка MSTest, которая запустила бы тесты.

Конечно, это - только опция, если Вам разрешают выполнить Выпуск Visual Studio 2 008 дБ (который я понимаю, теперь включен в VS, который 2008 Pro лицензирует).

0
ответ дан 4 December 2019 в 23:41
поделиться

Я сделал это в Java, с помощью dbunit.

В основном что-либо Вы делаете в базе данных также: возвращает набор результатов или изменяет состояние базы данных.

Состояние базы данных может быть описано как все значения во всех строках во всей таблице во всех схемах базы данных; состояние любого подмножества является состоянием всего влияния данных некоторым тестом.

Так, запустите с базы данных, заполненной достаточными данными тестирования, которые можно выполнить, Вы тестируете, назовите это базовой линией. Извлеките снимок с dbunit или инструментом по Вашему выбору.

Учитывая, что Ваша база данных в базовой линии, любой набор результатов детерминирован (как долго, как Ваш SP детерминирован, меньше, если это делает "случайный выбор ()";).

Получите базовый набор результатов всего своего SPS, сохраните тех как снимки с dbunit или безотносительно инструмента, который Вы используете.

Для тестирования операции, которые не изменяют состояние, просто протестируйте это набор результатов, который Вы получаете, тот, который Вы первоначально получили. Для тестирования операций, которые изменяют базу данных протестируйте ту базовую линию + операция = ожидаемое изменение. После каждого теста, что потенциально chnages дб, restoe это к базовой линии.

В основном способность восстановить к базовой линии делает тестирование возможным.

0
ответ дан 4 December 2019 в 23:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: