Я пытаюсь использовать Arquillian для проведения интеграционных тестов моего веб-приложения. Я новичок в Arquillian и потратил много времени, чтобы понять, как использовать Arquillian. Существует ряд устаревших руководств, и я не уверен, есть ли конфликты в используемых версиях. На основе найденных руководств и примеров я собрал файлы pom.xml (показан ниже) и arquillian.xml (показан ниже). Базовый пример, который я пытаюсь протестировать в Eclipse (версия Eclipse от марта 2019 г.), не выполняется, и я также не вижу никаких ошибок на консоли, что меня озадачивает. Я также прочитал несколько сообщений, в которых говорится, что мне нужно добавить путь к классам в мое затмение, но я не уверен, необходимо ли это, и нигде не нашел, как это сделать. Я использую Wildfly 16. Был бы очень признателен, если бы вы указали мне, в чем проблема?
Тест прост: я внедряю объект службы и пытаюсь сохранить объект портфолио. Чтобы запустить тест из Eclipse, я щелкаю правой кнопкой мыши по тестовому файлу и выбираю «Отладка как тест Junit» (запускает Junit 5), и я не вижу запуска сервера, а портфолиоService всегда имеет значение null. У меня также есть распечатка архива развертывания, но я ничего не вижу в консоли, что заставляет меня думать, что он не выполняется.
pom.xml
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
4.0.0
com.example
Samples
0.0.1-SNAPSHOT
war
UTF-8
UTF-8
1.8
1.8
1.6.0.Final
16.0.0.Final
false
org.jboss.arquillian
arquillian-bom
${version.arquillian}
import
pom
${project.artifactId}
maven-war-plugin
3.2.1
arq-wildfly-managed
true
org.wildfly
wildfly-arquillian-container-managed
8.2.1.Final
sun.jdk
jconsole
test
src/test/resources
maven-surefire-plugin
2.16
true
org.apache.maven.plugins
maven-dependency-plugin
unpack
process-test-classes
unpack
org.wildfly
wildfly-dist
${version.wildfly}
zip
false
${project.build.directory}
prime-repo
PrimeFaces Maven Repository
http://repository.primefaces.org
default
javax
javaee-api
8.0
provided
org.hibernate
hibernate-core
5.4.2.Final
mysql
mysql-connector-java
8.0.15
org.apache.commons
commons-math3
3.6.1
org.slf4j
slf4j-api
1.7.26
ch.qos.logback
logback-classic
1.2.3
org.junit.jupiter
junit-jupiter-api
5.6.2
test
org.junit.platform
junit-platform-runner
1.6.2
test
org.jboss.arquillian.junit
arquillian-junit-container
test
org.jboss.arquillian.protocol
arquillian-protocol-servlet
test
arquillian.xml
${jboss.home}
persistence.xml
xmlns="http://xmlns.jcp.org/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence ... ce_2_1.xsd">
java:/MySqlDS
java:/SampleDS
Пример теста
package com.example.view;
import static org.junit.jupiter.api.Assertions.assertEquals;
import java.util.List;
import javax.inject.Inject;
import org.jboss.arquillian.container.test.api.Deployment;
import org.jboss.arquillian.junit.Arquillian;
import org.jboss.shrinkwrap.api.ShrinkWrap;
import org.jboss.shrinkwrap.api.asset.EmptyAsset;
import org.jboss.shrinkwrap.api.spec.WebArchive;
import org.junit.jupiter.api.Test;
import org.junit.runner.RunWith;
import com.example.model.Portfolio;
import com.example.service.PortfolioService;
@RunWith(Arquillian.class)
class PortfolioBeanTest {
@Deployment
public static WebArchive createDeployment() {
WebArchive wArchive = ShrinkWrap.create(WebArchive.class, "test.war")
.addClasses(Portfolio.class, PortfolioService.class)
.addAsResource("META-INF/persistence.xml")
.addAsWebInfResource(EmptyAsset.INSTANCE, "beans.xml");
System.out.println(wArchive.toString(true));
return wArchive;
}
@Inject
PortfolioService portfolioService;
@Test
void testCreatePortfolio() {
Portfolio p = new Portfolio();
String name = "Test_Portfolio";
p.setPortfolioName(name);
boolean created = portfolioService.create(p);
List
portfolioList = portfolioService.getAllPortfolios();
assertEquals(1, portfolioList.size());
String portfolioName = portfolioList.get(0).getPortfolioName();
assertEquals(name, portfolioName);
}
}
Service.java
package com.example.service;
import java.lang.invoke.MethodHandles;
import java.util.List;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.TypedQuery;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.example.model.Portfolio;
@Stateless
public class PortfolioService {
@PersistenceContext(unitName = "mysql")
private EntityManager em;
private static Logger logger = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass().getSimpleName());
public boolean create(Portfolio portfolio) {
boolean created = true;
String name = portfolio.getPortfolioName();
portfolio.setPortfolioName(name);
em.persist(portfolio);
logger.debug("Created portfolio {}", portfolio);
return created;
}
public List getAllPortfolioNames() {
TypedQuery query = em.createQuery("SELECT p.portfolioName FROM Portfolio p", String.class);
List results = query.getResultList();
return results;
}
public Portfolio find(Long id) {
return em.find(Portfolio.class, id);
}
}
Подробнее здесь: https://stackoverflow.com/questions/619 ... llian-test
Невозможно выполнить тест Arquillian ⇐ JAVA
Программисты JAVA общаются здесь
1727515001
Anonymous
Я пытаюсь использовать Arquillian для проведения интеграционных тестов моего веб-приложения. Я новичок в Arquillian и потратил много времени, чтобы понять, как использовать Arquillian. Существует ряд устаревших руководств, и я не уверен, есть ли конфликты в используемых версиях. На основе найденных руководств и примеров я собрал файлы pom.xml (показан ниже) и arquillian.xml (показан ниже). Базовый пример, который я пытаюсь протестировать в Eclipse (версия Eclipse от марта 2019 г.), не выполняется, и я также не вижу никаких ошибок на консоли, что меня озадачивает. Я также прочитал несколько сообщений, в которых говорится, что мне нужно добавить путь к классам в мое затмение, но я не уверен, необходимо ли это, и нигде не нашел, как это сделать. Я использую Wildfly 16. Был бы очень признателен, если бы вы указали мне, в чем проблема?
Тест прост: я внедряю объект службы и пытаюсь сохранить объект портфолио. Чтобы запустить тест из Eclipse, я щелкаю правой кнопкой мыши по тестовому файлу и выбираю «Отладка как тест Junit» (запускает Junit 5), и я не вижу запуска сервера, а портфолиоService всегда имеет значение null. У меня также есть распечатка архива развертывания, но я ничего не вижу в консоли, что заставляет меня думать, что он не выполняется.
pom.xml
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
4.0.0
com.example
Samples
0.0.1-SNAPSHOT
war
UTF-8
UTF-8
1.8
1.8
1.6.0.Final
16.0.0.Final
false
org.jboss.arquillian
arquillian-bom
${version.arquillian}
import
pom
${project.artifactId}
maven-war-plugin
3.2.1
arq-wildfly-managed
true
org.wildfly
wildfly-arquillian-container-managed
8.2.1.Final
sun.jdk
jconsole
test
src/test/resources
maven-surefire-plugin
2.16
true
org.apache.maven.plugins
maven-dependency-plugin
unpack
process-test-classes
unpack
org.wildfly
wildfly-dist
${version.wildfly}
zip
false
${project.build.directory}
prime-repo
PrimeFaces Maven Repository
http://repository.primefaces.org
default
javax
javaee-api
8.0
provided
org.hibernate
hibernate-core
5.4.2.Final
mysql
mysql-connector-java
8.0.15
org.apache.commons
commons-math3
3.6.1
org.slf4j
slf4j-api
1.7.26
ch.qos.logback
logback-classic
1.2.3
org.junit.jupiter
junit-jupiter-api
5.6.2
test
org.junit.platform
junit-platform-runner
1.6.2
test
org.jboss.arquillian.junit
arquillian-junit-container
test
org.jboss.arquillian.protocol
arquillian-protocol-servlet
test
arquillian.xml
${jboss.home}
persistence.xml
xmlns="http://xmlns.jcp.org/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd">
java:/MySqlDS
java:/SampleDS
Пример теста
package com.example.view;
import static org.junit.jupiter.api.Assertions.assertEquals;
import java.util.List;
import javax.inject.Inject;
import org.jboss.arquillian.container.test.api.Deployment;
import org.jboss.arquillian.junit.Arquillian;
import org.jboss.shrinkwrap.api.ShrinkWrap;
import org.jboss.shrinkwrap.api.asset.EmptyAsset;
import org.jboss.shrinkwrap.api.spec.WebArchive;
import org.junit.jupiter.api.Test;
import org.junit.runner.RunWith;
import com.example.model.Portfolio;
import com.example.service.PortfolioService;
@RunWith(Arquillian.class)
class PortfolioBeanTest {
@Deployment
public static WebArchive createDeployment() {
WebArchive wArchive = ShrinkWrap.create(WebArchive.class, "test.war")
.addClasses(Portfolio.class, PortfolioService.class)
.addAsResource("META-INF/persistence.xml")
.addAsWebInfResource(EmptyAsset.INSTANCE, "beans.xml");
System.out.println(wArchive.toString(true));
return wArchive;
}
@Inject
PortfolioService portfolioService;
@Test
void testCreatePortfolio() {
Portfolio p = new Portfolio();
String name = "Test_Portfolio";
p.setPortfolioName(name);
boolean created = portfolioService.create(p);
List
portfolioList = portfolioService.getAllPortfolios();
assertEquals(1, portfolioList.size());
String portfolioName = portfolioList.get(0).getPortfolioName();
assertEquals(name, portfolioName);
}
}
Service.java
package com.example.service;
import java.lang.invoke.MethodHandles;
import java.util.List;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.TypedQuery;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.example.model.Portfolio;
@Stateless
public class PortfolioService {
@PersistenceContext(unitName = "mysql")
private EntityManager em;
private static Logger logger = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass().getSimpleName());
public boolean create(Portfolio portfolio) {
boolean created = true;
String name = portfolio.getPortfolioName();
portfolio.setPortfolioName(name);
em.persist(portfolio);
logger.debug("Created portfolio {}", portfolio);
return created;
}
public List getAllPortfolioNames() {
TypedQuery query = em.createQuery("SELECT p.portfolioName FROM Portfolio p", String.class);
List results = query.getResultList();
return results;
}
public Portfolio find(Long id) {
return em.find(Portfolio.class, id);
}
}
Подробнее здесь: [url]https://stackoverflow.com/questions/61987255/unable-to-execute-arquillian-test[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия