JoyOfCodingPDX / GettingStarted

Helps students in Contemporary Software Development get started with the programming assignments.
https://web.cecs.pdx.edu/~whitlock/
Apache License 2.0
6 stars 15 forks source link

Project 4 JUnit Integration Tests Break After "./mvnw clean verify" #45

Open NAlexH2 opened 2 years ago

NAlexH2 commented 2 years ago

After performing a ./mvnw clean verify on Windows, the integration tests can no longer be ran independently to perform further testing with the jetty server running.

The following error is what appears

"C:\Program Files\Eclipse Adoptium\jdk-17.0.3.7-hotspot\bin\java.exe" -ea -Didea.test.cyclic.buffer.size=1048576 "-javaagent:C:\Program Files\JetBrains\IntelliJ IDEA 2022.1.2\lib\idea_rt.jar=51974:C:\Program Files\JetBrains\IntelliJ IDEA 2022.1.2\bin" -Dfile.encoding=UTF-8 -classpath "C:\Users\nharr\.m2\repository\org\junit\vintage\junit-vintage-engine\5.9.0-M1\junit-vintage-engine-5.9.0-M1.jar;C:\Program Files\JetBrains\IntelliJ IDEA 2022.1.2\lib\idea_rt.jar;C:\Program Files\JetBrains\IntelliJ IDEA 2022.1.2\plugins\junit\lib\junit5-rt.jar;C:\Program Files\JetBrains\IntelliJ IDEA 2022.1.2\plugins\junit\lib\junit-rt.jar;E:\0-Local-School-Work\summer22\java-cs410p\cs410p-AdvJava-sum22\phonebill-web\target\test-classes;E:\0-Local-School-Work\summer22\java-cs410p\cs410p-AdvJava-sum22\phonebill-web\target\classes;C:\Users\nharr\.m2\repository\io\github\davidwhitlock\cs410J\projects\2022.2.0\projects-2022.2.0.jar;C:\Users\nharr\.m2\repository\io\github\davidwhitlock\cs410J\examples\2022.1.0\examples-2022.1.0.jar;C:\Users\nharr\.m2\repository\io\github\davidwhitlock\cs410J\family\2022.1.0\family-2022.1.0.jar;C:\Users\nharr\.m2\repository\com\sun\mail\jakarta.mail\2.0.1\jakarta.mail-2.0.1.jar;C:\Users\nharr\.m2\repository\com\sun\activation\jakarta.activation\2.0.1\jakarta.activation-2.0.1.jar;C:\Users\nharr\.m2\repository\com\google\inject\guice\5.1.0\guice-5.1.0.jar;C:\Users\nharr\.m2\repository\javax\inject\javax.inject\1\javax.inject-1.jar;C:\Users\nharr\.m2\repository\aopalliance\aopalliance\1.0\aopalliance-1.0.jar;C:\Users\nharr\.m2\repository\com\google\guava\guava\30.1-jre\guava-30.1-jre.jar;C:\Users\nharr\.m2\repository\com\google\guava\failureaccess\1.0.1\failureaccess-1.0.1.jar;C:\Users\nharr\.m2\repository\com\google\guava\listenablefuture\9999.0-empty-to-avoid-conflict-with-guava\listenablefuture-9999.0-empty-to-avoid-conflict-with-guava.jar;C:\Users\nharr\.m2\repository\com\google\code\findbugs\jsr305\3.0.2\jsr305-3.0.2.jar;C:\Users\nharr\.m2\repository\org\checkerframework\checker-qual\3.5.0\checker-qual-3.5.0.jar;C:\Users\nharr\.m2\repository\com\google\errorprone\error_prone_annotations\2.3.4\error_prone_annotations-2.3.4.jar;C:\Users\nharr\.m2\repository\com\google\j2objc\j2objc-annotations\1.3\j2objc-annotations-1.3.jar;C:\Users\nharr\.m2\repository\org\codehaus\groovy\groovy\3.0.8\groovy-3.0.8.jar;C:\Users\nharr\.m2\repository\org\codehaus\groovy\groovy-ant\3.0.8\groovy-ant-3.0.8.jar;C:\Users\nharr\.m2\repository\org\apache\ant\ant\1.10.9\ant-1.10.9.jar;C:\Users\nharr\.m2\repository\org\apache\ant\ant-junit\1.10.9\ant-junit-1.10.9.jar;C:\Users\nharr\.m2\repository\org\apache\ant\ant-launcher\1.10.9\ant-launcher-1.10.9.jar;C:\Users\nharr\.m2\repository\org\apache\ant\ant-antlr\1.10.9\ant-antlr-1.10.9.jar;C:\Users\nharr\.m2\repository\org\codehaus\groovy\groovy-astbuilder\3.0.8\groovy-astbuilder-3.0.8.jar;C:\Users\nharr\.m2\repository\org\codehaus\groovy\groovy-cli-picocli\3.0.8\groovy-cli-picocli-3.0.8.jar;C:\Users\nharr\.m2\repository\info\picocli\picocli\4.5.2\picocli-4.5.2.jar;C:\Users\nharr\.m2\repository\org\codehaus\groovy\groovy-console\3.0.8\groovy-console-3.0.8.jar;C:\Users\nharr\.m2\repository\org\codehaus\groovy\groovy-datetime\3.0.8\groovy-datetime-3.0.8.jar;C:\Users\nharr\.m2\repository\org\codehaus\groovy\groovy-docgenerator\3.0.8\groovy-docgenerator-3.0.8.jar;C:\Users\nharr\.m2\repository\com\thoughtworks\qdox\qdox\1.12.1\qdox-1.12.1.jar;C:\Users\nharr\.m2\repository\org\codehaus\groovy\groovy-groovydoc\3.0.8\groovy-groovydoc-3.0.8.jar;C:\Users\nharr\.m2\repository\com\github\javaparser\javaparser-core\3.18.0\javaparser-core-3.18.0.jar;C:\Users\nharr\.m2\repository\org\codehaus\groovy\groovy-groovysh\3.0.8\groovy-groovysh-3.0.8.jar;C:\Users\nharr\.m2\repository\jline\jline\2.14.6\jline-2.14.6.jar;C:\Users\nharr\.m2\repository\org\codehaus\groovy\groovy-jmx\3.0.8\groovy-jmx-3.0.8.jar;C:\Users\nharr\.m2\repository\org\codehaus\groovy\groovy-json\3.0.8\groovy-json-3.0.8.jar;C:\Users\nharr\.m2\repository\org\codehaus\groovy\groovy-jsr223\3.0.8\groovy-jsr223-3.0.8.jar;C:\Users\nharr\.m2\repository\org\codehaus\groovy\groovy-macro\3.0.8\groovy-macro-3.0.8.jar;C:\Users\nharr\.m2\repository\org\codehaus\groovy\groovy-nio\3.0.8\groovy-nio-3.0.8.jar;C:\Users\nharr\.m2\repository\org\codehaus\groovy\groovy-servlet\3.0.8\groovy-servlet-3.0.8.jar;C:\Users\nharr\.m2\repository\org\codehaus\groovy\groovy-sql\3.0.8\groovy-sql-3.0.8.jar;C:\Users\nharr\.m2\repository\org\codehaus\groovy\groovy-swing\3.0.8\groovy-swing-3.0.8.jar;C:\Users\nharr\.m2\repository\org\codehaus\groovy\groovy-templates\3.0.8\groovy-templates-3.0.8.jar;C:\Users\nharr\.m2\repository\org\codehaus\groovy\groovy-test\3.0.8\groovy-test-3.0.8.jar;C:\Users\nharr\.m2\repository\junit\junit\4.13.2\junit-4.13.2.jar;C:\Users\nharr\.m2\repository\org\hamcrest\hamcrest-core\1.3\hamcrest-core-1.3.jar;C:\Users\nharr\.m2\repository\org\codehaus\groovy\groovy-test-junit5\3.0.8\groovy-test-junit5-3.0.8.jar;C:\Users\nharr\.m2\repository\org\junit\platform\junit-platform-launcher\1.7.0\junit-platform-launcher-1.7.0.jar;C:\Users\nharr\.m2\repository\org\codehaus\groovy\groovy-testng\3.0.8\groovy-testng-3.0.8.jar;C:\Users\nharr\.m2\repository\org\testng\testng\7.4.0\testng-7.4.0.jar;C:\Users\nharr\.m2\repository\com\beust\jcommander\1.78\jcommander-1.78.jar;C:\Users\nharr\.m2\repository\org\webjars\jquery\3.5.1\jquery-3.5.1.jar;C:\Users\nharr\.m2\repository\org\codehaus\groovy\groovy-xml\3.0.8\groovy-xml-3.0.8.jar;C:\Users\nharr\.m2\repository\jakarta\xml\bind\jakarta.xml.bind-api\3.0.0\jakarta.xml.bind-api-3.0.0.jar;C:\Users\nharr\.m2\repository\com\sun\xml\bind\jaxb-impl\3.0.0\jaxb-impl-3.0.0.jar;C:\Users\nharr\.m2\repository\com\sun\xml\bind\jaxb-core\3.0.0\jaxb-core-3.0.0.jar;C:\Users\nharr\.m2\repository\io\github\davidwhitlock\cs410J\projects\2022.2.0\projects-2022.2.0-tests.jar;C:\Users\nharr\.m2\repository\javax\servlet\javax.servlet-api\4.0.1\javax.servlet-api-4.0.1.jar;C:\Users\nharr\.m2\repository\org\junit\jupiter\junit-jupiter\5.9.0-M1\junit-jupiter-5.9.0-M1.jar;C:\Users\nharr\.m2\repository\org\junit\jupiter\junit-jupiter-api\5.9.0-M1\junit-jupiter-api-5.9.0-M1.jar;C:\Users\nharr\.m2\repository\org\opentest4j\opentest4j\1.2.0\opentest4j-1.2.0.jar;C:\Users\nharr\.m2\repository\org\junit\platform\junit-platform-commons\1.9.0-M1\junit-platform-commons-1.9.0-M1.jar;C:\Users\nharr\.m2\repository\org\apiguardian\apiguardian-api\1.1.2\apiguardian-api-1.1.2.jar;C:\Users\nharr\.m2\repository\org\junit\jupiter\junit-jupiter-params\5.9.0-M1\junit-jupiter-params-5.9.0-M1.jar;C:\Users\nharr\.m2\repository\org\junit\jupiter\junit-jupiter-engine\5.9.0-M1\junit-jupiter-engine-5.9.0-M1.jar;C:\Users\nharr\.m2\repository\org\junit\platform\junit-platform-engine\1.9.0-M1\junit-platform-engine-1.9.0-M1.jar;C:\Users\nharr\.m2\repository\org\hamcrest\hamcrest\2.2\hamcrest-2.2.jar;C:\Users\nharr\.m2\repository\org\mockito\mockito-core\4.5.1\mockito-core-4.5.1.jar;C:\Users\nharr\.m2\repository\net\bytebuddy\byte-buddy\1.12.9\byte-buddy-1.12.9.jar;C:\Users\nharr\.m2\repository\net\bytebuddy\byte-buddy-agent\1.12.9\byte-buddy-agent-1.12.9.jar;C:\Users\nharr\.m2\repository\org\objenesis\objenesis\3.2\objenesis-3.2.jar;E:\0-Local-School-Work\summer22\java-cs410p\cs410p-AdvJava-sum22\phonebill-web\target\test-classes" com.intellij.rt.junit.JUnitStarter -ideVersion5 -junit5 edu.pdx.cs410J.nharris.Project4IT
Internal Error occurred.
org.junit.platform.commons.JUnitException: TestEngine with ID 'junit-vintage' failed to discover tests
    at org.junit.platform.launcher.core.EngineDiscoveryOrchestrator.discoverEngineRoot(EngineDiscoveryOrchestrator.java:111)
    at org.junit.platform.launcher.core.EngineDiscoveryOrchestrator.discover(EngineDiscoveryOrchestrator.java:85)
    at org.junit.platform.launcher.core.DefaultLauncher.discover(DefaultLauncher.java:92)
    at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:75)
    at com.intellij.junit5.JUnit5IdeaTestRunner.startRunnerWithArgs(JUnit5IdeaTestRunner.java:71)
    at com.intellij.rt.junit.IdeaTestRunner$Repeater$1.execute(IdeaTestRunner.java:38)
    at com.intellij.rt.execution.junit.TestsRepeater.repeat(TestsRepeater.java:11)
    at com.intellij.rt.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:35)
    at com.intellij.rt.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:235)
    at com.intellij.rt.junit.JUnitStarter.main(JUnitStarter.java:54)
Caused by: org.junit.platform.commons.JUnitException: ClassSelector [className = 'edu.pdx.cs410J.nharris.Project4IT'] resolution failed
    at org.junit.platform.launcher.listeners.discovery.AbortOnFailureLauncherDiscoveryListener.selectorProcessed(AbortOnFailureLauncherDiscoveryListener.java:39)
    at org.junit.platform.engine.support.discovery.EngineDiscoveryRequestResolution.resolveCompletely(EngineDiscoveryRequestResolution.java:103)
    at org.junit.platform.engine.support.discovery.EngineDiscoveryRequestResolution.run(EngineDiscoveryRequestResolution.java:83)
    at org.junit.platform.engine.support.discovery.EngineDiscoveryRequestResolver.resolve(EngineDiscoveryRequestResolver.java:113)
    at org.junit.vintage.engine.discovery.VintageDiscoverer.discover(VintageDiscoverer.java:42)
    at org.junit.vintage.engine.VintageTestEngine.discover(VintageTestEngine.java:64)
    at org.junit.platform.launcher.core.EngineDiscoveryOrchestrator.discoverEngineRoot(EngineDiscoveryOrchestrator.java:103)
    ... 9 more
Caused by: org.junit.platform.commons.PreconditionViolationException: Could not load class with name: edu.pdx.cs410J.nharris.Project4IT
    at org.junit.platform.engine.discovery.ClassSelector.lambda$getJavaClass$0(ClassSelector.java:75)
    at org.junit.platform.commons.function.Try$Failure.getOrThrow(Try.java:335)
    at org.junit.platform.engine.discovery.ClassSelector.getJavaClass(ClassSelector.java:74)
    at org.junit.vintage.engine.discovery.ClassSelectorResolver.resolve(ClassSelectorResolver.java:47)
    at org.junit.platform.engine.support.discovery.EngineDiscoveryRequestResolution.lambda$resolve$2(EngineDiscoveryRequestResolution.java:135)
    at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
    at java.base/java.util.ArrayList$ArrayListSpliterator.tryAdvance(ArrayList.java:1602)
    at java.base/java.util.stream.ReferencePipeline.forEachWithCancel(ReferencePipeline.java:129)
    at java.base/java.util.stream.AbstractPipeline.copyIntoWithCancel(AbstractPipeline.java:527)
    at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:513)
    at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
    at java.base/java.util.stream.FindOps$FindOp.evaluateSequential(FindOps.java:150)
    at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
    at java.base/java.util.stream.ReferencePipeline.findFirst(ReferencePipeline.java:647)
    at org.junit.platform.engine.support.discovery.EngineDiscoveryRequestResolution.resolve(EngineDiscoveryRequestResolution.java:189)
    at org.junit.platform.engine.support.discovery.EngineDiscoveryRequestResolution.resolve(EngineDiscoveryRequestResolution.java:126)
    at org.junit.platform.engine.support.discovery.EngineDiscoveryRequestResolution.resolveCompletely(EngineDiscoveryRequestResolution.java:92)
    ... 14 more
Caused by: java.lang.ClassNotFoundException: edu.pdx.cs410J.nharris.Project4IT
    at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641)
    at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:520)
    at org.junit.platform.commons.util.ReflectionUtils.lambda$tryToLoadClass$9(ReflectionUtils.java:829)
    at org.junit.platform.commons.function.Try.lambda$call$0(Try.java:57)
    at org.junit.platform.commons.function.Try.of(Try.java:93)
    at org.junit.platform.commons.function.Try.call(Try.java:57)
    at org.junit.platform.commons.util.ReflectionUtils.tryToLoadClass(ReflectionUtils.java:792)
    at org.junit.platform.commons.util.ReflectionUtils.tryToLoadClass(ReflectionUtils.java:748)
    ... 29 more

I found that the only workaround is this:

  1. Build the project through IntelliJ
  2. Start the jetty server
  3. Then the integration tests can be used.

As of now, all my unit tests work just fine, but to test the server from the command line without the different IT is not ideal after a verify. The workaround does the same job still as far as I can tell, though I wasn't sure if this was entirely expected behavior and thought it be best to open an issue.

DavidWhitlock commented 2 years ago

Hi, @NAlexH2. I wonder if this is related to this error that I mentioned in the "How to Test Your Code" handout:

image
NAlexH2 commented 2 years ago

@DavidWhitlock That's it exactly! Whoops. Though as mentioned in-person before class, would a possible solution be to modify ./mvnw verify build/execute the bytecode in such a way that it doesn't effect IntelliJ's ability to build/run the code too.