Иметь только символы подстановки - это то же самое, что не иметь критериев WHERE вообще. Так что вам не нужно утверждение WHERE.
... ... сказав, что - я бы порекомендовал вам создать запрос, используя представление конструктора запросов, а затем, как только он вернет записи, которые вы считаете правильными, - затем использовать эту опцию, чтобы отобразить их в представлении SQL. Это даст вам синтаксис.
Да, хорошо. На самом деле не, но я учился при человеке, который первоначально разработал QuickCheck, и он - действительно интересный парень.
Обратный в 2004, мы были вынуждены использовать QuickCheck для тестирования наших программ Haskell, и это была комбинация хороших и плохих. Главным образом плохо, потому что Haskell был немного пугающим самостоятельно, но однако замечательным, когда Вы получили его работа.
John с тех пор усовершенствовал это, которое он записал годы обратно и на самом деле помог Ericssion протестировать их сложные телекоммуникационные аппаратные средства, и он нашел ошибки приблизительно в 20 миллионах строк кода, уменьшающего это всего до трех шагов посредством его подхода. Он - великий докладчик, таким образом, это всегда - радость, слушая его подарок, что он так успевает, но в целом, то, что он сделал с QuickCheck, было плохо мне знакомо. Таким образом, я спросил его, что его интерес был в обеспечении этого на рынок. Он был открыт для идеи, но в то время, когда его бизнес (базирующийся вокруг QuickCheck) был относительно новым и таким образом, были другие области, на которых он сфокусируется. Это теперь 2007. Моя точка, Вы могли извлечь уроки из QuickCheck, даже если Вы привычка заканчиваете тем, что использовали его.
, Но что такое QuickCheck? Это - комбинаторная среда тестирования и интересный путь к тестовым программам. Люди в Microsoft Research создали Pex, который является видом подобных. Pex генерирует тесты автоматически путем исследования IL. Однако John записал бы генератор для возможного входа и тестовых свойств функции. Свойство - что-то, что может легко быть протестировано, и это намного более формально. например, инвертирование списка? Ну, при инвертировании списка, то же самое как разделение списка в двух половинах, инвертирование их каждый индивидуально и затем конкатенация двух обратных половин в обратном порядке.
1,2,3,4 // original
1,2 3,4 // split into A and B
2,1 4,3 // reverse A and B
4,3,2,1 // concat B and A
Это - большое свойство для тестирования с QuickCheck, названным спецификацией, и результат довольно удивителен.
Pex является хорошим, но не столь классным как QuickCheck, Pex упрощает вещи, QuickCheck делает к, но прилагает много усилий записать хорошую спецификацию.
питание QuickCheck состоит в том, что, когда он сталкивается с отказом, он уменьшит вход, который заставил Ваш тест перестать работать к самой маленькой форме. Отъезд Вас с подробным описанием того, что прогрессия состояния заставила Ваш тест приводить к сбою. По сравнению с другими средами тестирования, которые просто попытаются взломать Ваш код способом грубой силы.
Это сделано возможным из-за того, как Вы пишете свою спецификацию тестирования. QuickCheck полагается на псевдослучайность для изобретения входа, и это из-за этого, его способного из отслеживания в обратном порядке, и найдите действительно маленький вход, который не проходит тест.
Это - намного больше работы для записи свойств QuickCheck, но конечный результат лучше тестирует. Как сам John сказал, 70% ошибок пойманы поблочным тестированием, но случается так, что другие 30%, который заставляет Вашу программу отказывать. QuickCheck тестирует те последние 30%.
Я сделал реальную проблему Haskell, которая включила дискретное моделирование события. Таким образом, я записал библиотеку DES на основе монады продолжения, наряду с эквивалентами MVars и Каналам. Я должен был проверить, что это работало правильно, таким образом, я записал набор свойств QuickCheck, чтобы продемонстрировать, что, например, два потока параллельных данных, записанных в Канал будут правильно объединены, ничего не отбрасывая.
я также использовал QuickCheck, чтобы зарегистрировать и проверить, что свойства в моем Расположились Наборы и библиотеки Decimal .
, По моему опыту, QuickCheck является иногда большим. Если можно суммировать важное свойство кратким способом, хотя алгоритм, который обеспечивает то свойство, является волосатым, то QuickCheck является огромной победой. С другой стороны, я часто нахожу, что алгоритм эквивалентен свойству, которое я хочу проверить. В этом случае я ищу более простые свойства. Например, предположите, что функциональное "нечто", как предполагается, является нестрого монотонным. Затем можно записать
prop_fooMonotonic x y = (x > y) ==> (foo x >= foo y)
Я использую QuickCheck для большого количества персонального материала. В течение прошлых шести месяцев:
Выполнил QuickCheck для тестирования преобразований цвета и дискретных косинусных преобразований в компрессоре изображения.
Выполнил QuickCheck для тестирования модуля символьного дифференцирования, который я сделал на скорую руку для некоторой числовой оптимизации.
Выполнил QuickCheck для тестирования троичного дерева поиска в стиле Бентли и Sedgewick.
QuickCheck редко встречается весь мои потребности поблочного тестирования, но это - отличный способ начать,---и законы QuickCheck делают хорошую документацию.
Я использовал его довольно много, главным образом простым способом, в основном для тестирования реализации синтаксического анализатора и протокол.
Однако вот меньше тривиального бита от моего личного опыта: http://www.haskell.org/haskellwiki/QuickCheck_as_a_test_set_generator
ScalaCheck (QuickCheck для Scala) используется для тестирования Функциональный Java, библиотека, которая, среди прочего, реализует QuickCheck для Java.
Я использовал Haskell только в производственной среде для разработки небольших вспомогательных инструментов. В основном потому, что я единственный из известных мне разработчиков, кто читает Haskell. Тем не менее, я широко использовал QuickCheck, и меня очень раздражало, что что-то подобное недоступно в C #. Поэтому я решил попробовать написать его сам . Я тоже посмотрел на Pex, но обнаружил, что методы исследования программ, которые используются для поиска минимального ввода, менее интересны, чем способ, которым это делает QuickCheck.