Невозможно выполнить тест ArquillianJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Невозможно выполнить тест Arquillian

Сообщение 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 ... 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
Ответить

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

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

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

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

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