Запускайте модульные тесты только в WindowsJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Запускайте модульные тесты только в Windows

Сообщение Anonymous »

У меня есть класс, который выполняет вызовы собственных API Windows через JNA. Как я могу написать тесты JUnit, которые будут выполняться на машине разработки Windows, но будут игнорироваться на сервере сборки Unix?

Я могу легко получить информацию об операционной системе хоста, используя System.getProperty("os.name")

Я могу писать защитные блоки в своих тестах:

Код: Выделить всё

@Test public void testSomeWindowsAPICall() throws Exception {
if (isWindows()) {
// do tests...
}
}
Этот дополнительный стандартный код не идеален.

В качестве альтернативы я создал правило JUnit, которое запускает метод тестирования только в Windows:

Код: Выделить всё

  public class WindowsOnlyRule implements TestRule {
@Override
public Statement apply(final Statement base, final Description description) {
return new Statement() {
@Override
public void evaluate() throws Throwable {
if (isWindows()) {
base.evaluate();
}
}
};
}

private boolean isWindows() {
return System.getProperty("os.name").startsWith("Windows");
}
}
И это можно обеспечить, добавив это аннотированное поле в мой тестовый класс:

Код: Выделить всё

@Rule public WindowsOnlyRule runTestOnlyOnWindows = new WindowsOnlyRule();
На мой взгляд, оба этих механизма несовершенны в том, что на машине Unix они будут проходить молча. Было бы лучше, если бы их можно было каким-то образом помечать во время выполнения чем-то вроде @Ignore

Есть ли у кого-нибудь альтернативное предложение?

Подробнее здесь: https://stackoverflow.com/questions/234 ... on-windows
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»