Предотвратить выполнение тестов JUnit или установить специальный порядок выполнения тестов JUnit? - PullRequest
0 голосов
/ 27 января 2012

Обычно каждый тест JUnit должен быть инкапсулирован, но мне нужно проверить, можно ли расшифровать зашифрованный файл, сохраненный EncryptorTest, другим экземпляром Java VM в DecryptorTest. Вы можете управлять этим, запустив 2 различных класса тестирования JUnit (не сам JUnit тестирует!) . Единственная проблема заключается в том, что я должен гарантировать, что EncryptorTest выполняется до DecryptorTest (потому что первый сохраняет файл с зашифрованной строкой). Как я могу это сделать? Я думал об использовании TestSuite:

@RunWith(Suite.class)
@SuiteClasses({EncryptorTest.class, DecryptorTest.class})
public class EncrypterDecrypterTestSuite
{
}

Но на сервере каждый тест JUnit также будет запускаться сам по себе, поэтому EncryptorTest и DecryptorTest могут перепутаться. Как я могу предотвратить это?

Ответы [ 3 ]

2 голосов
/ 27 января 2012

JUnit не поддерживает порядок тестов, вы можете использовать TestNG для этого ( вот соответствующий документ ).

1 голос
/ 27 января 2012

Обычно JUnit используется для модульного тестирования, поэтому между тестовыми примерами не должно быть зависимостей. Вы можете использовать аннотацию @Before для настройки шифрования перед расшифровкой или, что еще лучше, загрузить файл шифрования из файловой системы или передать его программным способом.

0 голосов
/ 30 января 2012

Я решил это по-другому, сейчас. Я опускаю EncrypterTest и просто зашифровываю текст в файле сам и позволяю DecrypterTest читать этот файл все время. Поэтому мне не нужно заботиться о запуске его на разных виртуальных машинах.

...