Можно ли протестировать оператор JPA / EJB QL с помощью регулярных выражений? - PullRequest
1 голос
/ 27 октября 2009

Я не эксперт по регулярным выражениям, поэтому я решил выбросить этот вопрос. Я думаю, что регулярные выражения могут помочь сделать мои тесты более надежными (тестирование сгенерированных операторов EJB QL для правильной генерации).

Например:

select u.firstName, u.lastName from Users u where u.age > 50

Какое регулярное выражение я использую, чтобы разбить его на следующие?

  1. "u.firstName, u.lastName"
  2. "Users u"
  3. "u.age> 50"

независимо от регистра ключевых слов (т. Е. SELECT, Select, select, ...) и независимо от возможных пробелов до и после ключевых слов? Конечно, было бы еще лучше разделить его дальше, но если я смогу разделить части, как в примере выше, я смогу улучшить свои тесты.

Заранее спасибо за любые указатели и помощь.

Ответы [ 2 ]

1 голос
/ 27 октября 2009

Самым простым регулярным выражением будет что-то вроде:

select(.*?)from(.*?)where(.*)

В зависимости от вашего языка вы должны иметь возможность устанавливать флаги для регулярного выражения, чтобы они не учитывали регистр. Результатом этого будут 3 захваченные группы, которые содержат необходимую информацию (в окружении пробелов). Было бы проще просто использовать trim() или аналогичную функцию на вашем языке для удаления ненужных пробелов, а не делать регулярное выражение более сложным.

1 голос
/ 27 октября 2009

Регулярное выражение для разбиения будет что-то вроде:

 select|from|where

вы можете использовать инструмент lanaguage s для компиляции регулярных выражений без учета регистра

//Example in java
Pattern.compile("select|from|where",Pattern.CASE_INSENSITIVE).split("select x from y where z)
...