goll-michael opened a new issue, #839:
URL: https://github.com/apache/maven-surefire/issues/839

   ### Affected version
   
   3.5.3
   
   ### Bug description
   
   ArchUnit tests are not executed correctly with Surefire 3.5.3.
   
   For an underlying DTO class
   ```
   package custom;
   public class MyDTO {
       private String param;
       public String getParam() {
           return param;
       }
       public void setParam(String param) {
           this.param = param;
       }
   }
   ```
   
   the following ArchUnit test is defined
   ```
   package custom;
   
   import com.tngtech.archunit.core.importer.ImportOption;
   import com.tngtech.archunit.junit.AnalyzeClasses;
   import com.tngtech.archunit.junit.ArchTest;
   import com.tngtech.archunit.lang.ArchRule;
   import com.tngtech.archunit.lang.syntax.ArchRuleDefinition;
   
   @AnalyzeClasses(packages = "custom", importOptions = 
ImportOption.DoNotIncludeTests.class)
   public class ArchUnitTest {
   
       @ArchTest
       public static final ArchRule DTO_IN_PACKAGE_DTO= 
ArchRuleDefinition.classes()
               .that().haveSimpleNameEndingWith("DTO")
               .should().resideInAPackage("..dto..");
   }
   ```
   
   The pom.xml looks like this:
   ```
   <?xml version="1.0"?>
   <project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
            xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
https://maven.apache.org/xsd/maven-4.0.0.xsd";
            xmlns="http://maven.apache.org/POM/4.0.0";>
       <modelVersion>4.0.0</modelVersion>
   
       <groupId>custom</groupId>
       <artifactId>surefire-test</artifactId>
       <version>0.0.1</version>
   
       <dependencies>
           <dependency>
               <groupId>com.tngtech.archunit</groupId>
               <artifactId>archunit</artifactId>
               <version>1.4.0</version>
               <scope>test</scope>
           </dependency>
           <dependency>
               <groupId>com.tngtech.archunit</groupId>
               <artifactId>archunit-junit5</artifactId>
               <version>1.4.0</version>
               <scope>test</scope>
           </dependency>
       </dependencies>
   
       <build>
           <plugins>
               <plugin>
                   <groupId>org.apache.maven.plugins</groupId>
                   <artifactId>maven-surefire-plugin</artifactId>
                   <version>3.5.3</version>
               </plugin>
           </plugins>
       </build>
   
   </project>
   ```
   
   When running mvn clean test, the following output is generated (excerpt):
   ```
   [INFO] --- surefire:3.5.3:test (default-test) @ surefire-test ---
   [INFO] Using auto detected provider 
org.apache.maven.surefire.junitplatform.JUnitPlatformProvider
   [INFO] 
   [INFO] -------------------------------------------------------
   [INFO]  T E S T S
   [INFO] -------------------------------------------------------
   [INFO] Running custom.ArchUnitTest
   [INFO] Tests run: 0, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.651 
s -- in custom.ArchUnitTest
   [INFO] 
   [INFO] Results:
   [INFO]
   [INFO] Tests run: 0, Failures: 0, Errors: 0, Skipped: 0
   [INFO]
   [INFO] 
------------------------------------------------------------------------
   [INFO] BUILD SUCCESS
   [INFO] 
------------------------------------------------------------------------
   ```
   The assumption would be that the test fails, which is the case with version 
3.5.2
   ```
   [INFO] --- surefire:3.5.2:test (default-test) @ surefire-test ---
   [INFO] Using auto detected provider 
org.apache.maven.surefire.junitplatform.JUnitPlatformProvider
   [INFO] 
   [INFO] -------------------------------------------------------
   [INFO]  T E S T S
   [INFO] -------------------------------------------------------
   [INFO] Running custom.ArchUnitTest
   [ERROR] Tests run: 1, Failures: 1, Errors: 0, Skipped: 0, Time elapsed: 
0.638 s <<< FAILURE! -- in custom.ArchUnitTest
   [ERROR] ArchUnitTest.DTO_IN_PACKAGE_DTO -- Time elapsed: 0.628 s <<< FAILURE!
   java.lang.AssertionError:
   Architecture Violation [Priority: MEDIUM] - Rule 'classes that have simple 
name ending with 'DTO' should reside in a package '..dto..'' was violated (1 
times):
   Class <custom.MyDTO> does not reside in a package '..dto..' in (MyDTO.java:0)
           at 
com.tngtech.archunit.lang.ArchRule$Assertions.assertNoViolation(ArchRule.java:94)
           at 
com.tngtech.archunit.lang.ArchRule$Assertions.check(ArchRule.java:86)
           at 
com.tngtech.archunit.lang.ArchRule$Factory$SimpleArchRule.check(ArchRule.java:165)
           at 
com.tngtech.archunit.lang.syntax.ObjectsShouldInternal.check(ObjectsShouldInternal.java:81)
           at 
com.tngtech.archunit.junit.internal.ArchUnitTestDescriptor$ArchUnitRuleDescriptor.execute(ArchUnitTestDescriptor.java:168)
           at 
com.tngtech.archunit.junit.internal.ArchUnitTestDescriptor$ArchUnitRuleDescriptor.execute(ArchUnitTestDescriptor.java:151)
           at java.base/java.util.ArrayList.forEach(ArrayList.java:1596)
           at java.base/java.util.ArrayList.forEach(ArrayList.java:1596)
   
   [INFO] 
   [INFO] Results:
   [INFO]
   [ERROR] Failures: 
   [ERROR]   Architecture Violation [Priority: MEDIUM] - Rule 'classes that 
have simple name ending with 'DTO' should reside in a package '..dto..'' was 
violated (1 times):
   Class <custom.MyDTO> does not reside in a package '..dto..' in (MyDTO.java:0)
   [INFO]
   [ERROR] Tests run: 1, Failures: 1, Errors: 0, Skipped: 0
   [INFO]
   [INFO] 
------------------------------------------------------------------------
   [INFO] BUILD FAILURE
   [INFO] 
------------------------------------------------------------------------
   ```


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscr...@maven.apache.org.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org

Reply via email to