Использование аннотации @RunWith (SpringJUnit4ClassRunner.class) запускает мое приложение, в котором пользовательский интерфейс выводится на консоль. Из-за этого при выполнении тестов интерфейс всплывает и остается там. Я хочу знать, есть ли способ обойти запуск метода "run", в то же время выполняя мои тесты JUNIT.
ПРИМЕЧАНИЕ. Но пока, пожалуйста, помогите обойти метод run, так как он останавливает мою программу на неопределенный срок вместо запуска моих тестов. Есть ли еще какие-нибудь аннотации, которые я мог бы добавить в свой тест JUNIT, который все еще будет автоматически связывать мой репозиторий, но не должен запускать главное приложение моего приложения?
@SpringBootApplication
public class MerlinApplication implements CommandLineRunner {
private AssetRepository assetRepository;
private AssetTypeRepository assetTypeRepository;
private AssetService assetService;
private AssetTypeService assetTypeService;
private OrderRepository orderRepository;
private UserMenu userMenu;
public MerlinApplication(AssetRepository assetRepository, AssetTypeRepository assetTypeRepository, OrderRepository orderRepository) {
this.assetRepository = assetRepository;
this.assetTypeRepository = assetTypeRepository;
this.orderRepository = orderRepository;
assetService = new AssetService(assetRepository, assetTypeRepository);
assetTypeService = new AssetTypeService(assetTypeRepository);
userMenu = new UserMenu(assetRepository, assetTypeRepository, assetService, assetTypeService, orderRepository);
}
public static void main(String[] args) {
SpringApplication.run(MerlinApplication.class, args);
}
@Override
public void run(String... args) throws Exception {
userMenu.start(); //this pops up the menu.
}
}
JUNIT TEST
@SpringBootTest
@RunWith( SpringJUnit4ClassRunner.class )
@ContextConfiguration
public class TestAssetTypeService {
@Autowired
private AssetTypeRepository assetTypeRepository;
private AssetTypeService assetTypeService;
@Before
public void before(){
this.assetTypeService = new AssetTypeService(assetTypeRepository);
}
@Test
public void testImportAssetTypeCSVDuplicateInCSV() {
List<Object> results = assetTypeService.importAssetTypeCSV("src/test/java/edu/ben/Merlin/AssetTypeTest.csv");
boolean duplicateFound = false;
for (String failedResult : (List<String>) results.get(1)) {
if (failedResult.contains("Asset Type already exists in database: ")) {
duplicateFound = true;
}
}
assertThat(duplicateFound);
}
Вот что JUNIT на консоли выполняет:
введите описание изображения здесь