2012-01-27 3 views
0

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

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

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

ответ

2

JUnit не поддерживает заказ тестов, вы можете использовать TestNG для этого (here is the relevant doc).

+0

Спасибо за обрез. К сожалению, я должен запускать тестовые классы в специальном порядке, а не сами тесты. – Bevor

+0

TestNG также поддерживает упорядочение классов. –

+0

О, я вижу, спасибо. Сначала я просмотрел статью. – Bevor

1

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

+0

Это то, что я делаю, загружая его программно, но, как я уже сказал, вы не можете гарантировать, что дешифрование работает правильно, когда вы запускаете его в той же виртуальной машине. ОБНОВЛЕНИЕ: Может быть, мой вопрос был неясным. Вам нужно запустить два разных тестовых класса JUnit, чтобы гарантировать, что thakat будет запущено 2 разных виртуальных машины. (Я обновил свой вопрос) – Bevor

0

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

Смежные вопросы