From dc72351e7077bad3724301262cbb22c70de199fe Mon Sep 17 00:00:00 2001 From: Gunnar Morling Date: Sun, 5 May 2013 19:28:51 +0200 Subject: [PATCH] Introducing @WithClasses annotation for specification of classes under test --- .../collection/CollectionMappingTest.java | 13 ++------- .../DefaultCollectionImplementationTest.java | 19 ++++++------- .../ap/test/complex/CarMapperTest.java | 23 +++++++--------- .../ap/test/conversion/ConversionTest.java | 14 ++-------- .../mapstruct/ap/testutil/MapperTestBase.java | 5 +++- .../mapstruct/ap/testutil/WithClasses.java | 27 +++++++++++++++++++ 6 files changed, 53 insertions(+), 48 deletions(-) create mode 100644 processor/src/test/java/org/mapstruct/ap/testutil/WithClasses.java diff --git a/processor/src/test/java/org/mapstruct/ap/test/collection/CollectionMappingTest.java b/processor/src/test/java/org/mapstruct/ap/test/collection/CollectionMappingTest.java index 4fd0f5ba1..49ec8c944 100644 --- a/processor/src/test/java/org/mapstruct/ap/test/collection/CollectionMappingTest.java +++ b/processor/src/test/java/org/mapstruct/ap/test/collection/CollectionMappingTest.java @@ -19,26 +19,17 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.EnumSet; import java.util.HashSet; -import java.util.List; import org.mapstruct.ap.testutil.IssueKey; import org.mapstruct.ap.testutil.MapperTestBase; +import org.mapstruct.ap.testutil.WithClasses; import org.testng.annotations.Test; import static org.fest.assertions.Assertions.assertThat; +@WithClasses({ Source.class, Target.class, Colour.class, SourceTargetMapper.class }) public class CollectionMappingTest extends MapperTestBase { - @Override - protected List> getTestClasses() { - return Arrays.>asList( - Source.class, - Target.class, - Colour.class, - SourceTargetMapper.class - ); - } - @Test @IssueKey("6") public void shouldMapNullList() { diff --git a/processor/src/test/java/org/mapstruct/ap/test/collection/defaultimplementation/DefaultCollectionImplementationTest.java b/processor/src/test/java/org/mapstruct/ap/test/collection/defaultimplementation/DefaultCollectionImplementationTest.java index c51a934d8..b02859ad2 100644 --- a/processor/src/test/java/org/mapstruct/ap/test/collection/defaultimplementation/DefaultCollectionImplementationTest.java +++ b/processor/src/test/java/org/mapstruct/ap/test/collection/defaultimplementation/DefaultCollectionImplementationTest.java @@ -17,26 +17,23 @@ package org.mapstruct.ap.test.collection.defaultimplementation; import java.util.Arrays; import java.util.HashSet; -import java.util.List; import org.mapstruct.ap.testutil.IssueKey; import org.mapstruct.ap.testutil.MapperTestBase; +import org.mapstruct.ap.testutil.WithClasses; import org.testng.annotations.Test; import static org.fest.assertions.Assertions.assertThat; +@WithClasses({ + Source.class, + SourceFoo.class, + Target.class, + TargetFoo.class, + SourceTargetMapper.class +}) public class DefaultCollectionImplementationTest extends MapperTestBase { - @Override - protected List> getTestClasses() { - return Arrays.>asList( - Source.class, - SourceFoo.class, - Target.class, - TargetFoo.class, - SourceTargetMapper.class - ); - } @Test @IssueKey("6") diff --git a/processor/src/test/java/org/mapstruct/ap/test/complex/CarMapperTest.java b/processor/src/test/java/org/mapstruct/ap/test/complex/CarMapperTest.java index b24e3ed4a..5e179d3f6 100644 --- a/processor/src/test/java/org/mapstruct/ap/test/complex/CarMapperTest.java +++ b/processor/src/test/java/org/mapstruct/ap/test/complex/CarMapperTest.java @@ -21,25 +21,22 @@ import java.util.GregorianCalendar; import java.util.List; import org.mapstruct.ap.testutil.MapperTestBase; +import org.mapstruct.ap.testutil.WithClasses; import org.testng.annotations.Test; import static org.fest.assertions.Assertions.assertThat; +@WithClasses({ + Car.class, + CarDto.class, + Person.class, + PersonDto.class, + CarMapper.class, + Category.class, + DateMapper.class +}) public class CarMapperTest extends MapperTestBase { - @Override - protected List> getTestClasses() { - return Arrays.>asList( - Car.class, - CarDto.class, - Person.class, - PersonDto.class, - CarMapper.class, - Category.class, - DateMapper.class - ); - } - @Test public void shouldProvideMapperInstance() throws Exception { assertThat( CarMapper.INSTANCE ).isNotNull(); diff --git a/processor/src/test/java/org/mapstruct/ap/test/conversion/ConversionTest.java b/processor/src/test/java/org/mapstruct/ap/test/conversion/ConversionTest.java index 51b17e20b..dcb86f69d 100644 --- a/processor/src/test/java/org/mapstruct/ap/test/conversion/ConversionTest.java +++ b/processor/src/test/java/org/mapstruct/ap/test/conversion/ConversionTest.java @@ -15,25 +15,15 @@ */ package org.mapstruct.ap.test.conversion; -import java.util.Arrays; -import java.util.List; - import org.mapstruct.ap.testutil.MapperTestBase; +import org.mapstruct.ap.testutil.WithClasses; import org.testng.annotations.Test; import static org.fest.assertions.Assertions.assertThat; +@WithClasses({ Source.class, Target.class, SourceTargetMapper.class }) public class ConversionTest extends MapperTestBase { - @Override - protected List> getTestClasses() { - return Arrays.>asList( - Source.class, - Target.class, - SourceTargetMapper.class - ); - } - @Test public void shouldApplyConversions() { Source source = new Source(); diff --git a/processor/src/test/java/org/mapstruct/ap/testutil/MapperTestBase.java b/processor/src/test/java/org/mapstruct/ap/testutil/MapperTestBase.java index 71fdd8875..6dbc7e6b4 100644 --- a/processor/src/test/java/org/mapstruct/ap/testutil/MapperTestBase.java +++ b/processor/src/test/java/org/mapstruct/ap/testutil/MapperTestBase.java @@ -101,7 +101,10 @@ public abstract class MapperTestBase { * * @return A list containing the classes to be compiled for this test */ - protected abstract List> getTestClasses(); + private List> getTestClasses() { + WithClasses withClasses = this.getClass().getAnnotation( WithClasses.class ); + return withClasses != null ? Arrays.asList( withClasses.value() ) : Collections.>emptyList(); + } private List getSourceFiles(List> classes) { List sourceFiles = new ArrayList( classes.size() ); diff --git a/processor/src/test/java/org/mapstruct/ap/testutil/WithClasses.java b/processor/src/test/java/org/mapstruct/ap/testutil/WithClasses.java new file mode 100644 index 000000000..b8a393ca0 --- /dev/null +++ b/processor/src/test/java/org/mapstruct/ap/testutil/WithClasses.java @@ -0,0 +1,27 @@ +/** + * Copyright 2012-2013 Gunnar Morling (http://www.gunnarmorling.de/) + * + * Licensed 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. + */ +package org.mapstruct.ap.testutil; + +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; + +/** + * @author Gunnar Morling + */ +@Retention(RetentionPolicy.RUNTIME) +public @interface WithClasses { + Class[] value(); +}