arquillian / arquillian-core

Arquillian provides a component model for integration tests, which includes dependency injection and container life cycle management. Instead of managing a runtime in your test, Arquillian brings your test to the runtime.
http://arquillian.org
Apache License 2.0
366 stars 196 forks source link

[576] Add back the afterAll and beforeEach callbacks. The TestRu… #577

Closed jamezp closed 3 days ago

jamezp commented 3 days ago

…nnerAdaptor.before() and TestRunnerAdaptor.after() need to happen in the beforeEach and afterEach listeners.

Short description of what this resolves:

The BeforeEachCallback and AfterEachCallback callbacks need to be added back for JUnit 5. It looks like the resource injection needs to happen in this context to work.

resolves #576

lprimak commented 3 days ago

Any chance you can test / merge https://github.com/arquillian/arquillian-core/pull/314 ? JUnit 5 lifecycle tests

lprimak commented 3 days ago

~Also why is TestNG container failing?~

jamezp commented 3 days ago

Any chance you can test / merge #314 ? JUnit 5 lifecycle tests

I think we need to decide whether we should be running tests requiring implementations here, or if the implementations should be testing with CI and SNAPSHOT builds.

For https://github.com/wildfly/wildfly-arquillian I was planning on adding SNAPSHOT testing there for each push and a nightly job.

jamezp commented 3 days ago

Also why is TestNG container failing?

I'm not sure I follow, what do you mean by TestNG failing?

lprimak commented 3 days ago

Testing https://github.com/flowlogix/test-arq-suite/tree/TestNG with Arquillian 1.8.1.Final fails. 1.8.0.Final succeeds. This fix only touches JUnit5 yet there is still something wrong with TestNG container

jamezp commented 3 days ago

Testing https://github.com/flowlogix/test-arq-suite/tree/TestNG with Arquillian 1.8.1.Final fails. 1.8.0.Final succeeds. This fix only touches JUnit5 yet there is still something wrong with TestNG container

This fix is only for JUnit 5. I'm not sure what would fail with TestNG. I don't really see anything obvious, but you could file a new issue. The error seems to be something like:

Caused by: java.lang.reflect.MalformedParameterizedTypeException: Mismatch of count of formal and actual type arguments in constructor of org.jboss.arquillian.container.spi.Container: 0 formal argument(s) 1 actual argument(s)
    at java.base/sun.reflect.generics.reflectiveObjects.ParameterizedTypeImpl.validateConstructorArguments(ParameterizedTypeImpl.java:59)
    at java.base/sun.reflect.generics.reflectiveObjects.ParameterizedTypeImpl.<init>(ParameterizedTypeImpl.java:52)
    at java.base/sun.reflect.generics.reflectiveObjects.ParameterizedTypeImpl.make(ParameterizedTypeImpl.java:100)
    at java.base/sun.reflect.generics.factory.CoreReflectionFactory.makeParameterizedType(CoreReflectionFactory.java:105)
    at java.base/sun.reflect.generics.visitor.Reifier.visitClassTypeSignature(Reifier.java:140)
    at java.base/sun.reflect.generics.tree.ClassTypeSignature.accept(ClassTypeSignature.java:49)
    at java.base/sun.reflect.generics.visitor.Reifier.reifyTypeArguments(Reifier.java:68)
    at java.base/sun.reflect.generics.visitor.Reifier.visitClassTypeSignature(Reifier.java:138)
    at java.base/sun.reflect.generics.tree.ClassTypeSignature.accept(ClassTypeSignature.java:49)
    at java.base/sun.reflect.generics.repository.FieldRepository.computeGenericType(FieldRepository.java:90)
    at java.base/sun.reflect.generics.repository.FieldRepository.getGenericType(FieldRepository.java:82)
    at java.base/java.lang.reflect.Field.getGenericType(Field.java:276)
    at org.jboss.arquillian.core.impl.InjectionPointImpl.getType(InjectionPointImpl.java:61)
    at org.jboss.arquillian.core.impl.ManagerImpl.injectInstances(ManagerImpl.java:492)
    at org.jboss.arquillian.core.impl.ManagerImpl.inject(ManagerImpl.java:483)
    at org.jboss.arquillian.core.impl.ManagerImpl.inject(ManagerImpl.java:184)
    at org.jboss.arquillian.core.impl.InjectorImpl.inject(InjectorImpl.java:54)
    at org.jboss.arquillian.container.impl.LocalContainerRegistry.create(LocalContainerRegistry.java:73)
    ... 69 more

Anyway, that's definitely a different issue.

lprimak commented 3 days ago

Unfortunately I can't do a "real" test yet b/c Jakarta 1.8.1 isn't synced to maven central yet...

starksm64 commented 3 days ago

It is synched now: https://repo.maven.apache.org/maven2/org/jboss/arquillian/protocol/arquillian-protocol-servlet-jakarta/1.8.1.Final/ arquillian-protocol-servlet-jakarta-1.8.1.Fin... 2024-07-01 23:07 293766
arquillian-protocol-servlet-jakarta-1.8.1.Fin... 2024-07-01 23:07 32
arquillian-protocol-servlet-jakarta-1.8.1.Fin... 2024-07-01 23:07 40
arquillian-protocol-servlet-jakarta-1.8.1.Fin... 2024-07-01 23:07 48747
arquillian-protocol-servlet-jakarta-1.8.1.Fin... 2024-07-01 23:07 32
arquillian-protocol-servlet-jakarta-1.8.1.Fin... 2024-07-01 23:07 40
arquillian-protocol-servlet-jakarta-1.8.1.Fin... 2024-07-01 23:07 58927
arquillian-protocol-servlet-jakarta-1.8.1.Fin... 2024-07-01 23:07 32
arquillian-protocol-servlet-jakarta-1.8.1.Fin... 2024-07-01 23:07 40
arquillian-protocol-servlet-jakarta-1.8.1.Fin... 2024-07-01 23:07 2875
arquillian-protocol-servlet-jakarta-1.8.1.Fin... 2024-07-01 23:07 32
arquillian-protocol-servlet-jakarta-1.8.1.Fin... 2024-07-01 23:07 40

lprimak commented 2 days ago

Confirmed. Both TestNG and JUnit 5 work with the latest SNAPSHOT.