mkarg commented on a change in pull request #421:
URL: https://github.com/apache/maven/pull/421#discussion_r562929322



##########
File path: 
maven-artifact/src/test/java/org/apache/maven/artifact/ArtifactTest.java
##########
@@ -0,0 +1,43 @@
+package org.apache.maven.artifact;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+import java.io.File;
+import java.nio.file.Path;
+
+import org.junit.jupiter.api.Test;
+
+public class ArtifactTest {
+
+    @Test
+    public void testPathYieldsFile() {
+        final Artifact artifact = spy( Artifact.class );

Review comment:
       @elharo So in contrast to @rmannibucau you do want to keep the test for 
the default methods, or why else do you continue this thread?
   
   So for clarity:
   1. The result of calling `spy()` *is exactly* a class that implements the 
interface but does not override the default methods.
   2. The test *does* call `setPath` on that class
   3. No, the test *shall not* test whether `getPath` returns what `setPath` 
has set, as it is *not* a test for some arbitrary implementation, but is a test 
for *the default method* itself and ONLY for itself. This IS how pure interface 
get tested, as otherwise you would NOT test the interface but test THE 
SUBCLASS's ability to store between get/set, which is NOT the intention of the 
test. It actually shall proof that `setPath` effectively calls `setFile`, as it 
tests the default methods ONLY, and that is exactly what the default methods 
shall do, and that is exactly what the test does, and that is why the test is 
named `testPathYieldsFile` but NOT `testGetPathYieldsSetPath`.




----------------------------------------------------------------
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.

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


Reply via email to