Грубый, хакерский и не будет работать с негативами, но вы можете сделать работу, чтобы укрепить ее:
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.
Критические части:
Расширенный:
Хранимые процедуры. Я обычно включаю тестовые запросы в комментарии в заголовке SP и записываю корректные результаты и времена запроса. Это все еще оставляет его как ручное осуществление, как бы то ни было.)
Функции. Снова, поместите SQL-операторы в заголовок с той же информацией.
Триггеры. Я избегаю их по ряду причин, одного из них являющийся этим, их настолько трудно протестировать и отладить для такого небольшого преимущества по сравнению с помещением той же логики в другом уровне. Это похоже на выяснение, как протестировать на Ссылочную целостность.
Это - все еще ручной процесс, как бы то ни было. Но так как я думаю, что нужно намеренно разработать артефакты SQL, которые будут полностью разъединены (например, никакой SPS вызова SPS, то же с функциями и другим ударом против триггеров, по моему скромному мнению), это относительно менее сложно.
Вы попытались использовать API red-gate.com?
У них есть набор продуктов для сравнения вещей в SQL Server, и API позволяет фактически ту же функциональность программно.
http://help.red-gate.com/help/SQLDataCompareAPIv5/4/en/GettingStartedAPI.html
Я использовал базу данных, тестирующую, который встроен в Выпуск Базы данных Visual Studio 2008 года на проекте здесь. Это работает хорошо, но чувствует больше как стороннее устройство, повышающее характеристики, к Visual Studio, чем собственный компонент. Некоторые боли, которые я чувствовал с ним:
Все это сказало, когда я запустил с - Это действительно работает хорошо. К сожалению, мы еще не добавили эти тесты к нашему непрерывному серверу интеграции, таким образом, я не могу прокомментировать, как легкий это должно автоматизировать выполнение этих тестов. Мы используем TFS для CI, и я предполагаю, что автоматизация тестов работала бы очень похожая на автоматизацию стандартных модульных тестов; Другими словами, кажется, что должна быть командная строка MSTest, которая запустила бы тесты.
Конечно, это - только опция, если Вам разрешают выполнить Выпуск Visual Studio 2 008 дБ (который я понимаю, теперь включен в VS, который 2008 Pro лицензирует).
Я сделал это в Java, с помощью dbunit.
В основном что-либо Вы делаете в базе данных также: возвращает набор результатов или изменяет состояние базы данных.
Состояние базы данных может быть описано как все значения во всех строках во всей таблице во всех схемах базы данных; состояние любого подмножества является состоянием всего влияния данных некоторым тестом.
Так, запустите с базы данных, заполненной достаточными данными тестирования, которые можно выполнить, Вы тестируете, назовите это базовой линией. Извлеките снимок с dbunit или инструментом по Вашему выбору.
Учитывая, что Ваша база данных в базовой линии, любой набор результатов детерминирован (как долго, как Ваш SP детерминирован, меньше, если это делает "случайный выбор ()";).
Получите базовый набор результатов всего своего SPS, сохраните тех как снимки с dbunit или безотносительно инструмента, который Вы используете.
Для тестирования операции, которые не изменяют состояние, просто протестируйте это набор результатов, который Вы получаете, тот, который Вы первоначально получили. Для тестирования операций, которые изменяют базу данных протестируйте ту базовую линию + операция = ожидаемое изменение. После каждого теста, что потенциально chnages дб, restoe это к базовой линии.
В основном способность восстановить к базовой линии делает тестирование возможным.