2013-04-30 3 views
3

У меня есть программа Eclipse + Maven + TestNG, и я намерен запускать тестовые тесты Selenium.Ошибка Maven при запуске тестовых примеров testng

Это мой POM Файл:

<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"> 
<modelVersion>4.0.0</modelVersion> 
<groupId>MyGroupId</groupId> 
<artifactId>TestSuite</artifactId> 
<version>0.0.1-SNAPSHOT</version> 
<dependencies> 
    <dependency> 
     <groupId>org.seleniumhq.selenium</groupId> 
     <artifactId>selenium-java</artifactId> 
     <version>2.32.0</version> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.maven.surefire</groupId> 
     <artifactId>surefire-testng</artifactId> 
     <version>2.14.1</version> 
    </dependency> 
    <dependency> 
     <groupId>org.testng</groupId> 
     <artifactId>testng</artifactId> 
     <version>6.8.1</version> 
     <scope>test</scope> 
    </dependency> 
</dependencies> 
</project> 

Теперь, когда я пытаюсь запустить тест Maven, я получаю следующее сообщение об ошибке:

------------------------------------------------------- 
T E S T S 
------------------------------------------------------- 
org.apache.maven.surefire.util.SurefireReflectionException: 
java.lang.reflect.InvocationTargetException; nested exception is 
java.lang.reflect.InvocationTargetException: null 
java.lang.reflect.InvocationTargetException 
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
at 
    sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57) 
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 
at java.lang.reflect.Constructor.newInstance(Constructor.java:525) 
at org.apache.maven.surefire.util.ReflectionUtils.instantiateOneArg(ReflectionUtils.java:130) 
at org.apache.maven.surefire.booter.SurefireReflector.instantiateProvider(SurefireReflector.java:247) 
at org.apache.maven.surefire.booter.ProviderFactory.createProvider(ProviderFactory.java:81) 
at org.apache.maven.surefire.booter.SurefireStarter.invokeProvider(SurefireStarter.java:171) 
at org.apache.maven.surefire.booter.SurefireStarter.runSuitesInProcessWhenForked(SurefireStarter.java:107) 
at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:68) 
Caused by: java.lang.NoSuchMethodError: org.apache.maven.surefire.providerapi.ProviderParameters.getRunOrderCalculator()Lorg/apache/maven/surefire/util/RunOrderCalculator; 
at org.apache.maven.surefire.testng.TestNGProvider.<init>(TestNGProvider.java:67) 
... 10 more 

Results : 

Tests run: 0, Failures: 0, Errors: 0, Skipped: 0 

Может кто-то предложить мне что, что мне не хватает здесь.

Заранее спасибо.

ответ

6

Вы должны определить maven-surefire-plugin в разделе pluginManagement, как следующее:

<build> 
    <pluginManagement> 
     <plugins> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-surefire-plugin</artifactId> 
      <version>2.14.1</version> 
     </plugin> 
     </plugins> 
    </pluginManagement> 
    </build> 

Чтобы использовать TestNG в отношениях с Maven-верный-плагин вы обычно нужно только добавить TestNG как ничего зависимость больше.

Кроме того удалим зависимость вы дали:

<dependency> 
    <groupId>org.apache.maven.surefire</groupId> 
    <artifactId>surefire-testng</artifactId> 
    <version>2.14.1</version> 
</dependency> 

Помимо вышеперечисленного это больше походит на интеграционных тестов, является работа maven-failsafe-plugin и не из Maven-плагин-верный.

<plugin> 
    <artifactId>maven-failsafe-plugin</artifactId> 
    <executions> 
    <execution> 
     <goals> 
     <goal>integration-test</goal> 
     <goal>verify</goal> 
     </goals> 
    </execution> 
    </executions> 
</plugin> 

Это означает, что ваши тесты (предположительно интеграционные тесты, основанные на зависимости селеном) могут быть запущены с помощью:

mvn verify 
+0

Я сделал изменения, предложенными (добавлялись плагины блока в POM файл и удалить SUREFIRE -testng), но я все еще получаю исключение. Хотя на этот раз я получил другое исключение. –

+0

Сделайте простой проект, который воспроизводит проблему и помещает код с pom и т. Д. В Github. – khmarbaise

1

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

Может быть что-то, чтобы проверить

1

Может поможет кому-то. Я помог - изменение версии зависимости TestNG

Это было:

<dependency> 
    <groupId>org.testng</groupId> 
    <artifactId>testng</artifactId> 
    <version>6.11</version> 
    <scope>test</scope> 
</dependency> 

И стал:

<dependency> 
    <groupId>org.testng</groupId> 
    <artifactId>testng</artifactId> 
    <version>6.10</version> 
    <scope>test</scope> 
</dependency>