Привет, подскажите как сделать автоматичекую генерацию репорта после прохождения тестов на мавене.
Да, я могу ручками прописать mvn site
перед тем как захочется посмотреть репорт, но хотелось бы как-то это дело сделать автоматическим.
Вариант 1 : mvn clean test site
Вариант 2 : Добавить в свой pom.xml следующее
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.2.1</version>
<configuration>
<executable>mvn</executable>
<arguments>
<argument>clean</argument>
<argument>test</argument>
<argument>site</argument>
</arguments>
</configuration>
</plugin>
</plugins>
</build>
И потом запустить mvn exec:exec
В pom.xml для maven-surefire-plugin добавьте параметр testFailureIgnore:
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<testFailureIgnore>true</testFailureIgnore>
...
</configuration>
Отчет Allure будет формироваться даже при наличии проваленных тестов. Поэтому можете добавлять фазу site сразу при запуске прогона:
mvn clean test site jetty:run …
Я наверное должен был уточнить, что тесты запускаю с помощью testNG (а вообще в перспективе хочу прикрутить Аллюр к ТимСити, но там свои пироги, так что пока к Мавену) и, грубо говоря, хочу, чтоб когда я из IDE ранил тесты - репорт генерился автоматически, без дополнительных запусков чего-либо руками из командной строки или откуда-либо еще .
Allure ты в любом случае будешь делать через maven. Даже если к Тим Сити подключать, то нужно будет вкрутить депенденси, а дальше уже плагин подберет артифакты и сделает отчет ( да, тут уже мейвен сайт не нужно будет вызывать). Если ты хочешь через ИДЕ запускать, то добавь опцию которую порекомендовал @msmolyakov и создай в IDE кастомную конфигурацию, которая будет запускать твои тесты через maven. Если же ты хочешь запустить один конкретный suite и посмотреть отчет, то тут скорей всего мало чем можно помочь - тебе все равно прийдется запускать генерацию отчетов ручками
Не подскажите как такую команду: mvn clean test site jetty:run - забиндить в мавене на одну кнопку? Я вот как сделал:
- в правом верхнем углу ИДЕИ выбрал "Run/Debug Configuration"
- создал там настройку “Maven” и в поле “Comand line” - указал “clean test site jetty:run” (команду в поле указал без кавычек)
тест проходит, но потом Allure выкидывает ошибки:
окт 26, 2015 11:07:36 PM org.sonatype.guice.bean.reflect.Logs$JULSink warn
WARNING: Error injecting: ru.yandex.qatools.allure.report.AllureReportMojo
com.google.inject.ProvisionException: Guice provision errors:
1) No implementation for org.eclipse.aether.RepositorySystem was bound.
while locating ru.yandex.qatools.allure.report.AllureReportMojo
1 error
at com.google.inject.internal.InjectorImpl$3.get(InjectorImpl.java:974)
at com.google.inject.internal.InjectorImpl.getInstance(InjectorImpl.java:1000)
at org.sonatype.guice.bean.reflect.AbstractDeferredClass.get(AbstractDeferredClass.java:45)
at com.google.inject.internal.ProviderInternalFactory.provision(ProviderInternalFactory.java:84)
at com.google.inject.internal.InternalFactoryToInitializableAdapter.provision(InternalFactoryToInitializableAdapter.java:52)
at com.google.inject.internal.ProviderInternalFactory$1.call(ProviderInternalFactory.java:70)
at com.google.inject.internal.ProvisionListenerStackCallback$Provision.provision(ProvisionListenerStackCallback.java:100)
at org.sonatype.guice.plexus.lifecycles.PlexusLifecycleManager.onProvision(PlexusLifecycleManager.java:138)
at com.google.inject.internal.ProvisionListenerStackCallback$Provision.provision(ProvisionListenerStackCallback.java:108)
at com.google.inject.internal.ProvisionListenerStackCallback.provision(ProvisionListenerStackCallback.java:55)
at com.google.inject.internal.ProviderInternalFactory.circularGet(ProviderInternalFactory.java:68)
at com.google.inject.internal.InternalFactoryToInitializableAdapter.get(InternalFactoryToInitializableAdapter.java:45)
at com.google.inject.internal.InjectorImpl$3$1.call(InjectorImpl.java:965)
at com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1011)
at com.google.inject.internal.InjectorImpl$3.get(InjectorImpl.java:961)
at com.google.inject.Scopes$1$1.get(Scopes.java:59)
at org.sonatype.guice.bean.locators.LazyBeanEntry.getValue(LazyBeanEntry.java:83)
at org.sonatype.guice.plexus.locators.LazyPlexusBean.getValue(LazyPlexusBean.java:49)
at org.codehaus.plexus.DefaultPlexusContainer.lookup(DefaultPlexusContainer.java:253)
at org.codehaus.plexus.DefaultPlexusContainer.lookup(DefaultPlexusContainer.java:245)
at org.apache.maven.plugin.internal.DefaultMavenPluginManager.getConfiguredMojo(DefaultMavenPluginManager.java:455)
at org.apache.maven.reporting.exec.DefaultMavenReportExecutor.getConfiguredMavenReport(DefaultMavenReportExecutor.java:318)
at org.apache.maven.reporting.exec.DefaultMavenReportExecutor.buildReportPlugin(DefaultMavenReportExecutor.java:267)
at org.apache.maven.reporting.exec.DefaultMavenReportExecutor.buildMavenReports(DefaultMavenReportExecutor.java:148)
at org.apache.maven.plugins.site.AbstractSiteRenderingMojo.getReports(AbstractSiteRenderingMojo.java:240)
at org.apache.maven.plugins.site.SiteMojo.execute(SiteMojo.java:121)
at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:101)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:209)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:84)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:59)
at org.apache.maven.lifecycle.internal.LifecycleStarter.singleThreadedBuild(LifecycleStarter.java:183)
at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:161)
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:320)
at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:156)
at org.apache.maven.cli.MavenCli.execute(MavenCli.java:537)
at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:196)
at org.apache.maven.cli.MavenCli.main(MavenCli.java:141)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:290)
at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:230)
at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:409)
at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:352)
at org.codehaus.classworlds.Launcher.main(Launcher.java:47)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:140)
но если ввести все через терминал - mvn clean test site jetty:run, то все ОК, ошибок нет…
Спасибо