xpath assertion with wildcards failed with soapUI Maven plugin - xpath

I'm using wildcards in xpath assertion, the checkbox was checked and cases passed in soapUI client.
However all of those assertions with xpath + wildcards failed in my Jenkins job based on the mvn plugin
here's my dependencies in POM
<plugin>
<groupId>eviware</groupId>
<artifactId>maven-soapui-plugin</artifactId>
<version>4.0.1</version>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.8.2</version>
</dependency>
</dependencies>
here's the assertion failures
16:26:48,179 ERROR [SoapUITestCaseRunner] ASSERTION FAILED -> XPathContains comparison failed, expecting [*], actual was [101500052082]

Related

Intellij is ignoring Maven settings [duplicate]

I am trying to run tests in Intellij which used to work earlier in spring boot 2.2.x. I recently upgraded to spring boot 2.3.9. When I try to run the test from Run Configurations, it doesn't run the test and throws the error:
'failed to resolve junit platform launcher 1.6.3 intellij'.
However if I run the test in cli, it works fine.
It turns out that, junit5-platform-launcher dependency needs to be added in order for Junit5 tests to run in IntelliJ.
https://youtrack.jetbrains.com/issue/IDEA-231927?_ga=2.5997872.2063517257.1613993298-1098513328.1597974168
https://junit.org/junit5/docs/current/user-guide/#running-tests-ide-intellij-idea
Add this dependency explicitly in pom.xml, and it will solve the issue.
<dependency>
<groupId>org.junit.platform</groupId>
<artifactId>junit-platform-launcher</artifactId>
<scope>test</scope>
</dependency>
I was facing same issue "failed to resolve junit platform launcher 1.8.1" intellij.
IntellJ version: 2021.3
I found answer here and it worked, no need to add any dependency to pom.
Go to settings >> HTTP Proxy >> choose auto-detect proxy settings
For IntelliJ Idea 2021.1, I fixed a similar problem with:
<dependency>
<groupId>org.junit.platform</groupId>
<artifactId>junit-platform-launcher</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
<scope>test</scope>
</dependency>
Maybe an even better fix is:
<dependencyManagement>
<dependencies>
<!-- https://mvnrepository.com/artifact/org.junit/junit-bom -->
<dependency>
<groupId>org.junit</groupId>
<artifactId>junit-bom</artifactId>
<version>5.7.1</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
Found the above solution on Jetbrains issue tracker
If you have no direct internet connection but a repository manager like artifactory, idea tries to resolve junit-platform-launcher from there. Make sure u have a mirror to maven central repository (virtual repository) configured and the artifactory url to this mirror is accessible WITHOUT authentication (in the settings for the repo "Force Authentication" should be unchecked).
Check also the idea proxy settings and if needed, configure an exception for the artifactory domain.
Check your proxy settings in IntelliJ Idea settings. I turned ON the proxy and it solved the problem.
Here's the official way to do this
Maven Surefire and Maven Failsafe can run JUnit 4 based tests
alongside Jupiter tests as long as you configure test scoped
dependencies on JUnit 4 and the JUnit Vintage TestEngine
implementation similar to the following.
<!-- ... -->
<build>
<plugins>
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.22.2</version>
</plugin>
<plugin>
<artifactId>maven-failsafe-plugin</artifactId>
<version>2.22.2</version>
</plugin>
</plugins>
</build>
<!-- ... -->
<dependencies>
<!-- ... -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
<version>5.7.2</version>
<scope>test</scope>
</dependency>
<!-- ... -->
</dependencies>
<!-- ... -->

Execution analyze of goal org.apache.maven.plugins:maven-dependency-plugin:3.0.0:analyze-only failed: This feature requires ASM7

I am using open jdk-11. When I run maven, I am getting below error:
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-dependency-plugin:3.0.0:analyze-only (analyze) on project mobilefabric-install-common: Execution analyze of goal org.apache.maven.plugins:maven-dependency-plugin:3.0.0:analyze-only failed: This feature requires ASM7 -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.maven.plugins:maven-dependency-plugin:3.0.0:analyze-only (analyze) on project mobilefabric-install-common: Execution analyze of goal org.apache.maven.plugins:maven-dependency-plugin:3.0.0:analyze-only failed: This feature requires ASM7
Maven versions : 3.6.1
pom.xml:
<artifactId>maven-dependency-plugin</artifactId>
<version>3.1.1</version>
<dependencies>
<dependency>
<groupId>org.ow2.asm</groupId>
<artifactId>asm</artifactId>
<version>7.2-beta</version>
</dependency>
</dependencies>
This configuration works for me on Java 11:
<plugin>
<artifactId>maven-dependency-plugin</artifactId>
<version>3.1.1</version>
<dependencies>
<dependency>
<groupId>org.apache.maven.shared</groupId>
<artifactId>maven-dependency-analyzer</artifactId>
<version>1.11.1</version>
</dependency>
</dependencies>
</plugin>
Origin: Rune Flobakk's comment on MDEP-613

Cobertura report not increasing the code coverage with Powermock

I am using Cobertura maven plugin [version 2.7] to understand the code coverage for my tests. I am using PowerMock [version 1.6.6] to mock dependent objects. But when I run mvn cobertura:cobertura and check the report, the coverage remains the same. It works fine when I do not use mocking. Is this a compatibility issue?
I tried mvn clean multiple times just to be sure that the report is newly generated.
Here is my pom.xml
<properties>
<powermock.version>1.6.6</powermock.version>
</properties>
<build>
<plugins>
<!-- Cobertura plugin for code coverage -->
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>cobertura-maven-plugin</artifactId>
<version>2.7</version>
<configuration>
<formats>
<format>html</format>
<format>xml</format>
</formats>
</configuration>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.powermock</groupId>
<artifactId>powermock-module-junit4</artifactId>
<version>${powermock.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.powermock</groupId>
<artifactId>powermock-api-mockito</artifactId>
<version>${powermock.version}</version>
<scope>test</scope>
</dependency>
</dependencies>
Any help on this is appreciated.
Unfortunately, there's a big chance that it's impossible. I don't know how exactly Cobertura works, but I suspect that it uses same approach like a JaCoCo and modifies byte code with Java Agent.
But PowerMock reads classes from disk when loads a class, so all changes are lost.
One small change that Cobertura can modify classes during compile time. If yes, then you may try it.
Cobertura project looks abandoned, so I don't see any reason to spend time on integrating with not supported project. I'd like to focus on integration with JaCoCo and provides supporting on-fly instrumenting.

Using "provided" classpath in tomcat7-maven-plugin goals

I have some dependencies in my webapp that I've marked as provided because I expect them to be provided by an appserver (maybe a production environment provides these dependencies at the specified versions). How do I simulate that when I'm running tests or in development on my localhost using for example the tomcat7-maven-plugin goals like run?
I can't see any way to do it without manually copying jars around. I can see how to use the test classpath - is there something wrong with what I'm trying to do?
OK, I've found a way of getting this to work - it's reasonable but there's a duplication of dependency information and a magic profile... I feel that the tomcat7-maven-plugin should provide a means of making provided dependencies available in the container when running.
Add a profile that is activated when the tomcat plugin runs, and add the dependencies that have provided scope with compile scope to that profile, eg.
... in project pom ...
<dependencies>
<dependency>
<groupId>com.mycompany</groupId>
<artifactId>my-provided-artifact</artifactId>
<version>1.2.3</version>
<scope>provided</scope>
</dependency>
</dependencies>
...
<profiles>
<profile>
<!-- profile activated as cli param when tomcat7 plugin runs -->
<id>tomcat</id>
<dependencies>
<dependency>
<groupId>com.mycompany</groupId>
<artifactId>my-provided-artifact</artifactId>
<version>1.2.3</version>
<scope>compile</scope>
</dependency>
</dependencies>
</profile>
</profiles>
I use, for example, this:
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.0</version>
<configuration>
<path>/myApp</path>
</configuration>
<dependencies>
<dependency>
<groupId>com.oracle</groupId>
<artifactId>ojdbc6</artifactId>
<version>11.2.0.3</version>
</dependency>
</dependencies>
</plugin>
and then also include the dependency again later with provided.

Tests stuck on Configuring TestNG with: TestNG652Configurator

I have some TestNG tests in my project running alongside of jUnit tests. Everyone coexists peacefully and stuff runs as expected, until one day instead of working all the time things changed to working some of the time.
When running mvn clean install tests get to the point of
Configuring TestNG with: TestNG652Configurator
and gets stuck. Nothing seems to happen since.
When running mvn -X clean install tests get to the exact same point without issues (no errors on top) and refuses to move further.
I am using
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<version>6.8</version>
</dependency>
and
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.10</version>
</dependency>
What can be going on here please?
I've never seen Surefire (the plugin that runs the tests) run tests from both JUnit and TestNG out-of-the-box, although it's supposed to do it.
You can force surefire to run both JUnit and TestNG by forcing the providers as explained here. For example, the following will force TestNG and JUnit 4.7
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.13</version>
<dependencies>
<dependency>
<groupId>org.apache.maven.surefire</groupId>
<artifactId>surefire-junit47</artifactId>
<version>2.13</version>
</dependency>
<dependency>
<groupId>org.apache.maven.surefire</groupId>
<artifactId>surefire-testng</artifactId>
<version>2.13</version>
</dependency>
</dependencies>
</plugin>
Another thing that might influence the result is if you have configured TestNG to run some test groups
.

Resources