Инстанцирование объекта JUnit TestCase

Я думаю, что вы должны предоставить свое собственное определение того, что является символом слова, вместо того, чтобы полагаться на границы слов по умолчанию ICE ([[:<:]], [[:>:]]). Из документации mysql 5.6 :

Слово - это последовательность символов слова, которой не предшествуют или не следуют символы слова. Символ слова - это буквенно-цифровой символ в классе alnum или знак подчеркивания (_).

blockquote>

Это будет означать: '^|[^[:alnum:]_]'

^             -- the beginning of the string
|             -- OR
[^            -- any character OTHER than
    [:alnum:]     -- an alphanumeric character
    _             -- an underscore
]

И конец строки ICE будет: '[^[:alnum:]_]|, где $ представляет конец строки.

Вы можете просто изменить это, чтобы добавить одинарную кавычку в класс символов, например:

  • начало: '^|[^[:alnum:]_'']'
  • конец: '[^[:alnum:]_'']|
  • [1147 ]

    Вот ваше регулярное выражение:

SELECT (val REGEXP CONCAT('(^|[^[:alnum:]_''])', 'cat''s', '([^[:alnum:]_'']|$)'));

См. Демонстрацию по dbfiddle

Схема (MySQL v5.6) [1133 ]


Запрос № 1

Select ('cat''s'
    REGEXP CONCAT('(^|[^[:alnum:]_''])', 'cat''s', '([^[:alnum:]_'']|$)')) res;
| res |
| --- |
| 1   |

Запрос № 2

Select ('''cat''s' 
    REGEXP CONCAT('(^|[^[:alnum:]_''])', '''cat''s', '([^[:alnum:]_'']|$)' )) res;
| res |
| --- |
| 1   |

Запрос № 3

Select ('_cat''s'
    REGEXP CONCAT('(^|[^[:alnum:]_''])', '_cat''s' , '([^[:alnum:]_'']|$)' )) res;
| res |
| --- |
| 1   |

Запрос № 4

Select ('-cat''s'  
    REGEXP CONCAT('(^|[^[:alnum:]_''])', '-cat''s' , '([^[:alnum:]_'']|$)' )) res;
| res |
| --- |
| 1   |

Запрос № 5

Select (' cat''s' 
    REGEXP CONCAT('(^|[^[:alnum:]_''])', ' cat''s' , '([^[:alnum:]_'']|$)' )) res;
| res |
| --- |
| 1   |

Запрос № 6

Select ('cat'''
    REGEXP CONCAT('(^|[^[:alnum:]_''])', 'cat''' , '([^[:alnum:]_'']|$)' )) res;
| res |
| --- |
| 1   |
[1147 ]

Вот ваше регулярное выражение:

[111]

См. Демонстрацию по dbfiddle

Схема (MySQL v5.6) [1133 ]


Запрос № 1

[112] [113]

Запрос № 2

[114] [115]

Запрос № 3

[116] [117]

Запрос № 4

[118] [119]

Запрос № 5

[1110] [1111]

Запрос № 6

[1112] [1113] , где $ представляет конец строки.

Вы можете просто изменить это, чтобы добавить одинарную кавычку в класс символов, например:

  • начало: '^|[^[:alnum:]_'']'
  • конец: '[^[:alnum:]_'']|
  • [1147 ]

    Вот ваше регулярное выражение:

    [111]

    См. Демонстрацию по dbfiddle

    Схема (MySQL v5.6) [1133 ]


    Запрос № 1

    [112] [113]

    Запрос № 2

    [114] [115]

    Запрос № 3

    [116] [117]

    Запрос № 4

    [118] [119]

    Запрос № 5

    [1110] [1111]

    Запрос № 6

    [1112] [1113] [1147 ]

    Вот ваше регулярное выражение:

    [111]

    См. Демонстрацию по dbfiddle

    Схема (MySQL v5.6) [1133 ]


    Запрос № 1

    [112] [113]

    Запрос № 2

    [114] [115]

    Запрос № 3

    [116] [117]

    Запрос № 4

    [118] [119]

    Запрос № 5

    [1110] [1111]

    Запрос № 6

    [1112] [1113]

9
задан MvanGeest 28 July 2010 в 12:04
поделиться

5 ответов

Я не мог найти четкий ответ в документах JUnit о Вашем вопросе, но намерение, как anjanb записал, то, что каждый тест независим от других, таким образом, новый экземпляр TestCase мог быть создан, чтобы каждый тест был запущен.

Если у Вас есть дорогая тестовая установка ("приспособления"), что Вы хотите быть совместно использованными через все тестовые сценарии в тестовом классе, можно использовать @BeforeClass аннотацию на статический метод достигнуть этого результата: http://junit.sourceforge.net/javadoc_40/org/junit/BeforeClass.html. Отметьте однако, что новый экземпляр может все еще быть создан для каждого теста, но это не будет влиять на статические данные, которые инициализировал Ваш @BeforeTest метод.

4
ответ дан 4 December 2019 в 12:22
поделиться

Да, создается отдельный экземпляр.

При запущении того теста 2 экземпляра MyTest создаются.

Если Вы хотите другое поведение, одна опция состоит в том, чтобы использовать подобный инструмент под названием TestNG (http://testng.org/doc/).

8
ответ дан 4 December 2019 в 12:22
поделиться

Существует один экземпляр для каждого тестового прогона. Попробовать

public class MyTest extends TestCase {
  public MyTest() { System.out.println("MyTest Constructor");
  public void setUp() { System.out.println("MyTest setUp");
  public void tearDown() { System.out.println("MyTest tearDown");
  public void testSomething() { System.out.println("MyTest testSomething");
  public void testSomethingElse() { System.out.println("MyTest testSomethingElse");
}

Исходный код (включая который к более новым версиям - Ваш и мой пример Junit 3) находится на http://www.junit.org

3
ответ дан 4 December 2019 в 12:22
поделиться

Если Вы спрашиваете это, потому что Вы обеспокоены инициализируемыми данными и повторно инициализированы в Вашем конструкторе, знают, что предписанный способ инициализировать Ваши данные тестовых сценариев через установку () и разрушение () исключительно.

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

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

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

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