Code review comment: You probably need to check the md5 of the executable jar here before and after test command.

Code under review:
public void testTestCommandPreservingBinJarInTargetDir() {
        Path projectPath = this.testResources.resolve("validMultiModuleProjectWithTests");
        System.setProperty(ProjectConstants.USER_DIR, projectPath.toString());
        
        BuildCommand buildCommand = new BuildCommand(projectPath, printStream, printStream, false);
        new CommandLine(buildCommand).parse();
        buildCommand.execute();
        Assert.assertTrue(projectPath.resolve("target").resolve("bin").resolve("winery.jar").toFile().exists());

        
        TestCommand testCommand = new TestCommand(projectPath, printStream, printStream, false);
        new CommandLine(testCommand).parse();
        testCommand.execute();
        Assert.assertTrue(projectPath.resolve("target").resolve("bin").resolve("winery.jar").toFile().exists());
        Assert.assertTrue(projectPath.resolve("target").resolve("cache").resolve("foo")
                .resolve("winery").resolve("0.1.0").resolve("java11")
                .resolve("foo-winery-0.1.0.jar").toFile().exists());
        Assert.assertTrue(projectPath.resolve("target").resolve("cache").resolve("foo")
                .resolve("winery").resolve("0.1.0").resolve("java11")
                .resolve("foo-winery-0.1.0-testable.jar").toFile().exists());
    }

Line commented on: Assert.assertTrue(projectPath.resolve("target").resolve("bin").resolve("winery.jar").toFile().exists());

Revised code:
public void testTestCommandPreservingBinJarInTargetDir() throws IOException {
        Path projectPath = this.testResources.resolve("validMultiModuleProjectWithTests");
        System.setProperty(ProjectConstants.USER_DIR, projectPath.toString());
        
        BuildCommand buildCommand = new BuildCommand(projectPath, printStream, printStream, false);
        new CommandLine(buildCommand).parse();
        buildCommand.execute();
        Assert.assertTrue(projectPath.resolve("target").resolve("bin").resolve("winery.jar").toFile().exists());
        String md5BinJar = DigestUtils.md5Hex(
                Files.newInputStream(projectPath.resolve("target").resolve("bin").resolve("winery.jar")));

        
        TestCommand testCommand = new TestCommand(projectPath, printStream, printStream, false);
        new CommandLine(testCommand).parse();
        testCommand.execute();
        Assert.assertTrue(projectPath.resolve("target").resolve("bin").resolve("winery.jar").toFile().exists());
        Assert.assertEquals(md5BinJar, DigestUtils.md5Hex(
                Files.newInputStream(projectPath.resolve("target").resolve("bin").resolve("winery.jar"))));
        Assert.assertTrue(projectPath.resolve("target").resolve("cache").resolve("foo")
                .resolve("winery").resolve("0.1.0").resolve("java11")
                .resolve("foo-winery-0.1.0.jar").toFile().exists());
        Assert.assertTrue(projectPath.resolve("target").resolve("cache").resolve("foo")
                .resolve("winery").resolve("0.1.0").resolve("java11")
                .resolve("foo-winery-0.1.0-testable.jar").toFile().exists());
    }