Я относительно новичок в maven и боролся с прилагаемыми тестами, я нашел несколько статей здесь, которые заставили меня участвовать в этом, но не могут получить последнее последнее немного. Вот что я пытаюсь сделать. У меня есть 2 модуля, которые определяют набор интерфейсов и рудиментарный тест этих интерфейсов. Второй модуль обеспечивает реализацию интерфейса, и я бы хотел запустить на нем предопределенный тест. Я варил вниз к простому примеру, вот эти два проекта:Maven исполнение одного прилагаемого теста
interface
+ pom.xml
+ src
+ main
+ java
+ demo
+ Messenger.java
+ test
+ java
+ demo
+ MessengerTest.java
impl
+ pom.xml
+ src
+ main
+ java
+ demo
+ impl
+ MessengerImpl.java
+ test
+ resources
+ context.xml
Интерфейс pom.xml:
<project xmlns="http://maven.apache.org/POM/4.0.0" 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">
<groupId>demo</groupId>
<artifactId>interface</artifactId>
<version>1.0</version>
<modelVersion>4.0.0</modelVersion>
<packaging>jar</packaging>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>3.2.2.RELEASE</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.14</version>
<configuration>
<skipTests>true</skipTests>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.2</version>
<executions>
<execution>
<goals>
<goal>test-jar</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
Источник Messenger.java:
package demo;
public interface Messenger {
String getMessage();
}
MessengerTest .java источник:
package demo;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
import org.junit.Before;
import org.junit.Test;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import demo.Messenger;
public class MessengerTest {
private BeanFactory beanfactory;
@Before
public void setUp() throws Exception {
beanfactory = new ClassPathXmlApplicationContext("context.xml");
}
@Test
public final void testGetMessage() throws Exception {
final Messenger msngr = beanfactory.getBean(Messenger.class);
String msg = msngr.getMessage();
assertNotNull(msg);
assertTrue(msg.length() > 0);
}
}
Выполнение 'mvn install', похоже, делает правильные вещи, создавая интерфейс-1.0.jar и interface-1.0-tests.jar в моем локальном репозитории.
код реализации проста, pom.xml:
<project xmlns="http://maven.apache.org/POM/4.0.0" 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">
<groupId>demo</groupId>
<artifactId>impl</artifactId>
<version>1.0</version>
<modelVersion>4.0.0</modelVersion>
<packaging>jar</packaging>
<dependencies>
<dependency>
<groupId>demo</groupId>
<artifactId>interface</artifactId>
<version>1.0</version>
</dependency>
<dependency>
<groupId>demo</groupId>
<artifactId>interface</artifactId>
<version>1.0</version>
<type>test-jar</type>
<scope>test</scope>
</dependency>
</dependencies>
</project>
Источник MessageImpl.java:
package demo.impl;
import demo.Messenger;
public class MessengerImpl implements Messenger {
@Override
public String getMessage() {
return "Hello World";
}
}
И, наконец, контекст весна файл:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:aop="http://www.springframework.org/schema/aop"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
<bean id="MyMessenger" class="demo.impl.MessengerImpl"/>
</beans>
Со всем этим на месте я выполняю «mvn -Dtest = demo.MessengerTest test», и, к сожалению, он терпит неудачу с «... No tes были казнены! ». Таким образом, есть проблема.
Извините, что за то, что вы так долго наматывались, но я хотел быть достаточно полным, любое руководство было бы очень благодарно.
У вас есть ' true ' set в плагине maven-surefire: Может быть, проблема? –
torquestomp
Я считаю, что это влияет только на создание артефактов интерфейса, нет классов реализации, поэтому тест не может быть запущен до установки. – rgmoul
Я подтвердил это, я удалил его с pm и переустановил (указав -Dtest.skip = true в командной строке), и получаю те же результаты. – rgmoul