[testedby-commit] [testedby] r187 committed - Test injection should be run only on metadata collected by annotations...

0 views
Skip to first unread message

test...@googlecode.com

unread,
Apr 19, 2010, 4:54:03 PM4/19/10
to testedb...@googlegroups.com
Revision: 187
Author: maestri.stefano
Date: Mon Apr 19 13:49:21 2010
Log: Test injection should be run only on metadata collected by annotations
New issue
Summary:
Status: Fixed
Labels: Type-Defect Priority-Critical

Test injection (crestion of class undertest starting from an interface
during test aginst interfaces phase)
injection should be run only on metadata collected by annotations
http://code.google.com/p/testedby/source/detail?r=187

Added:
/trunk/src/test/java/it/javalinux/testedby/runner/impl

/trunk/src/test/java/it/javalinux/testedby/runner/impl/JunitTestRunnerTest.java
Deleted:
/trunk/src/test/java/it/javalinux/testedby/runner/JunitTestRunnerTest.java
Modified:
/trunk/src/main/java/it/javalinux/testedby/metadata/ClassLinkMetadata.java
/trunk/src/main/java/it/javalinux/testedby/metadata/LinkMetadata.java
/trunk/src/main/java/it/javalinux/testedby/runner/impl/JunitTestRunner.java

=======================================
--- /dev/null
+++
/trunk/src/test/java/it/javalinux/testedby/runner/impl/JunitTestRunnerTest.java
Mon Apr 19 13:49:21 2010
@@ -0,0 +1,157 @@
+/*
+ * Stefano Maestri, javalinuxlabs.org Copyright 2008, and individual
contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package it.javalinux.testedby.runner.impl;
+
+import static org.junit.matchers.JUnitMatchers.hasItem;
+
+import static org.hamcrest.core.IsNot.not;
+
+import static org.junit.matchers.JUnitMatchers.hasItems;
+
+import static org.hamcrest.core.Is.is;
+
+import static org.junit.Assert.assertThat;
+
+import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.verify;
+
+import it.javalinux.testedby.metadata.ClassLinkMetadata;
+import it.javalinux.testedby.metadata.StatusMetadata;
+import it.javalinux.testedby.metadata.TestsMetadata;
+import
it.javalinux.testedby.metadata.builder.annotations.AnnotationBasedMetadataBuilder;
+import
it.javalinux.testedby.metadata.builder.instrumentation.InvocationTracker;
+import it.javalinux.testedby.metadata.impl.ImmutableMethodMetadata;
+import it.javalinux.testedby.runner.impl.JunitTestRunner;
+import it.javalinux.testedby.testsupport.ClassExtendingAbstractClass;
+import it.javalinux.testedby.testsupport.TestClassOne;
+import it.javalinux.testedby.testsupport.TestClassTwo;
+import
it.javalinux.testedby.testsupport.interfaces.AbstractClassClassExtendingInterfaceUnderTestWithAddedAnnotations;
+import it.javalinux.testedby.testsupport.interfaces.InterfaceUnderTestOne;
+import
it.javalinux.testedby.testsupport.interfaces.TestClassOnInterfaceOne;
+import
it.javalinux.testedby.testsupport.interfaces.TestClassOnInterfaceTwo;
+
+import java.util.Arrays;
+import java.util.LinkedList;
+import java.util.List;
+
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+/**
+ * @author stefano...@javalinux.it
+ *
+ */
+public class JunitTestRunnerTest {
+
+ private final static StatusMetadata status = new
StatusMetadata().setFromAnnotation(true).setValid(true).setJustCreated(true).setOnAbstract(false);
+
+ private final static StatusMetadata statusInstrumentation = new
StatusMetadata().setFromAnnotation(false).setValid(true).setJustCreated(true).setOnAbstract(false);
+
+ private final static ClassLinkMetadata CLASS_UNDERTEST_ONE_METADATA =
new
ClassLinkMetadata(status, "it.javalinux.testedby.testsupport.ClassUnderTestOneAnnotationOnMethod");
+
+ private final static ClassLinkMetadata CLASS_UNDERTEST_TWO_METADATA =
new
ClassLinkMetadata(status, "it.javalinux.testedby.testsupport.ClassUnderTestOneAnnotationOnClass");
+
+ private final static ClassLinkMetadata
CLASS_UNDERTEST_INSTRUMENTATION_METADATA = new
ClassLinkMetadata(statusInstrumentation, "it.javalinux.testedby.testsupport.ClassUnderTestOneAnnotationOnClass");
+
+ private static InvocationTracker tracker;
+
+ @BeforeClass
+ public static void setUpTracker() {
+ tracker = spy(InvocationTracker.getInstance());
+ InvocationTracker.setInstance(tracker);
+
+ }
+
+ @Test
+ public void
shouldNotKeepTrackAndRunTestForAbstractClassesAndInterface() throws
Exception {
+ JunitTestRunner runner = new JunitTestRunner();
+
+ List<Class<?>> testClasses = Arrays.asList(TestClassOne.class,
TestClassTwo.class, TestClassOnInterfaceOne.class,
TestClassOnInterfaceTwo.class);
+ AnnotationBasedMetadataBuilder builder = new
AnnotationBasedMetadataBuilder();
+ List<Class<?>> classesUnderTest = new LinkedList<Class<?>>();
+ classesUnderTest.add(ClassExtendingAbstractClass.class);
+
classesUnderTest.add(AbstractClassClassExtendingInterfaceUnderTestWithAddedAnnotations.class);
+ classesUnderTest.add(InterfaceUnderTestOne.class);
+ TestsMetadata metadatas = builder.build(classesUnderTest, testClasses,
true);
+
+ List<ClassLinkMetadata> list =
metadatas.getClassesTestedBy(TestClassOnInterfaceOne.class.getCanonicalName(),
new
ImmutableMethodMetadata(TestClassOnInterfaceOne.class.getMethod("testMethodOne")));
+ runner.runTest(TestClassOne.class.getCanonicalName(), "testMethodOne",
list.toArray(new ClassLinkMetadata[list.size()]));
+
+
verify(tracker,never()).setCurrentClassUnderTest(AbstractClassClassExtendingInterfaceUnderTestWithAddedAnnotations.class.getCanonicalName());
+
verify(tracker,never()).setCurrentClassUnderTest(InterfaceUnderTestOne.class.getCanonicalName());
+ verify(tracker,
times(1)).setCurrentClassUnderTest(ClassExtendingAbstractClass.class.getCanonicalName());
+
+ }
+
+ @Test
+ public void shouldKeepTrackAndRunTestForAllClassesUnderTest() throws
Exception {
+ JunitTestRunner runner = new JunitTestRunner();
+
+ runner.runTest(TestClassOne.class.getCanonicalName(), "testMethodOne",
CLASS_UNDERTEST_ONE_METADATA, CLASS_UNDERTEST_TWO_METADATA);
+
+ verify(tracker,
times(1)).setCurrentClassUnderTest(CLASS_UNDERTEST_ONE_METADATA.getClazz());
+ verify(tracker,
times(1)).setCurrentClassUnderTest(CLASS_UNDERTEST_TWO_METADATA.getClazz());
+
+ }
+
+ @Test
+ public void shouldReturnTrueIfAllTestPasses() {
+ JunitTestRunner runner = new JunitTestRunner();
+
+ boolean result =
runner.runTest(TestClassOne.class.getCanonicalName(), "testMethodTwo",
CLASS_UNDERTEST_ONE_METADATA, CLASS_UNDERTEST_TWO_METADATA);
+ assertThat(result, is(true));
+ }
+
+ @Test
+ public void shouldReturnTrueIfAtLeasetOneTestDoesntPass() {
+ JunitTestRunner runner = new JunitTestRunner();
+
+ boolean result =
runner.runTest(TestClassOne.class.getCanonicalName(), "testMethodOne",
CLASS_UNDERTEST_ONE_METADATA, CLASS_UNDERTEST_TWO_METADATA);
+ assertThat(result, is(false));
+ }
+
+ @Test
+ public void shouldReturnTrueIfSingleTestMethodPasses() {
+ JunitTestRunner runner = new JunitTestRunner();
+
+ boolean result =
runner.runTest(TestClassOne.class.getCanonicalName(), "testMethodTwo");
+ assertThat(result, is(true));
+ }
+
+ @Test
+ public void shouldReturnTrueIfSingleTestMethodDoesntPass() {
+ JunitTestRunner runner = new JunitTestRunner();
+
+ boolean result =
runner.runTest(TestClassOne.class.getCanonicalName(), "testMethodOne");
+ assertThat(result, is(false));
+ }
+
+ @Test
+ public void fileterClassLinkShouldReturnOnlyFromAnnotation() throws
Exception {
+ JunitTestRunner runner = new JunitTestRunner();
+
assertThat(runner.filterOnlyFromAnnotation(CLASS_UNDERTEST_INSTRUMENTATION_METADATA,
CLASS_UNDERTEST_TWO_METADATA, CLASS_UNDERTEST_ONE_METADATA),
hasItems(CLASS_UNDERTEST_ONE_METADATA, CLASS_UNDERTEST_TWO_METADATA));
+
assertThat(runner.filterOnlyFromAnnotation(CLASS_UNDERTEST_INSTRUMENTATION_METADATA,
CLASS_UNDERTEST_TWO_METADATA, CLASS_UNDERTEST_ONE_METADATA),
not((hasItem(CLASS_UNDERTEST_INSTRUMENTATION_METADATA))));
+
+ }
+
+}
=======================================
---
/trunk/src/test/java/it/javalinux/testedby/runner/JunitTestRunnerTest.java
Wed Apr 14 09:27:29 2010
+++ /dev/null
@@ -1,139 +0,0 @@
-/*
- * Stefano Maestri, javalinuxlabs.org Copyright 2008, and individual
contributors
- * as indicated by the @author tags. See the copyright.txt file in the
- * distribution for a full listing of individual contributors.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- */
-package it.javalinux.testedby.runner;
-
-import static org.hamcrest.core.Is.is;
-
-import static org.junit.Assert.assertThat;
-
-import static org.mockito.Mockito.never;
-import static org.mockito.Mockito.spy;
-import static org.mockito.Mockito.times;
-import static org.mockito.Mockito.verify;
-
-import it.javalinux.testedby.metadata.ClassLinkMetadata;
-import it.javalinux.testedby.metadata.StatusMetadata;
-import it.javalinux.testedby.metadata.TestsMetadata;
-import
it.javalinux.testedby.metadata.builder.annotations.AnnotationBasedMetadataBuilder;
-import
it.javalinux.testedby.metadata.builder.instrumentation.InvocationTracker;
-import it.javalinux.testedby.metadata.impl.ImmutableMethodMetadata;
-import it.javalinux.testedby.runner.impl.JunitTestRunner;
-import it.javalinux.testedby.testsupport.ClassExtendingAbstractClass;
-import it.javalinux.testedby.testsupport.TestClassOne;
-import it.javalinux.testedby.testsupport.TestClassTwo;
-import
it.javalinux.testedby.testsupport.interfaces.AbstractClassClassExtendingInterfaceUnderTestWithAddedAnnotations;
-import it.javalinux.testedby.testsupport.interfaces.InterfaceUnderTestOne;
-import
it.javalinux.testedby.testsupport.interfaces.TestClassOnInterfaceOne;
-import
it.javalinux.testedby.testsupport.interfaces.TestClassOnInterfaceTwo;
-
-import java.util.Arrays;
-import java.util.LinkedList;
-import java.util.List;
-
-import org.junit.BeforeClass;
-import org.junit.Test;
-
-/**
- * @author stefano...@javalinux.it
- *
- */
-public class JunitTestRunnerTest {
-
- private final static StatusMetadata status = new
StatusMetadata().setFromAnnotation(true).setValid(true).setJustCreated(true).setOnAbstract(false);
-
- private final static ClassLinkMetadata CLASS_UNDERTEST_ONE_METADATA =
new
ClassLinkMetadata(status, "it.javalinux.testedby.testsupport.ClassUnderTestOneAnnotationOnMethod");
-
- private final static ClassLinkMetadata CLASS_UNDERTEST_TWO_METADATA =
new
ClassLinkMetadata(status, "it.javalinux.testedby.testsupport.ClassUnderTestOneAnnotationOnClass");
-
- private static InvocationTracker tracker;
-
- @BeforeClass
- public static void setUpTracker() {
- tracker = spy(InvocationTracker.getInstance());
- InvocationTracker.setInstance(tracker);
-
- }
-
- @Test
- public void
shouldNotKeepTrackAndRunTestForAbstractClassesAndInterface() throws
Exception {
- JunitTestRunner runner = new JunitTestRunner();
-
- List<Class<?>> testClasses = Arrays.asList(TestClassOne.class,
TestClassTwo.class, TestClassOnInterfaceOne.class,
TestClassOnInterfaceTwo.class);
- AnnotationBasedMetadataBuilder builder = new
AnnotationBasedMetadataBuilder();
- List<Class<?>> classesUnderTest = new LinkedList<Class<?>>();
- classesUnderTest.add(ClassExtendingAbstractClass.class);
-
classesUnderTest.add(AbstractClassClassExtendingInterfaceUnderTestWithAddedAnnotations.class);
- classesUnderTest.add(InterfaceUnderTestOne.class);
- TestsMetadata metadatas = builder.build(classesUnderTest, testClasses,
true);
-
- List<ClassLinkMetadata> list =
metadatas.getClassesTestedBy(TestClassOnInterfaceOne.class.getCanonicalName(),
new
ImmutableMethodMetadata(TestClassOnInterfaceOne.class.getMethod("testMethodOne")));
- runner.runTest(TestClassOne.class.getCanonicalName(), "testMethodOne",
list.toArray(new ClassLinkMetadata[list.size()]));
-
-
verify(tracker,never()).setCurrentClassUnderTest(AbstractClassClassExtendingInterfaceUnderTestWithAddedAnnotations.class.getCanonicalName());
-
verify(tracker,never()).setCurrentClassUnderTest(InterfaceUnderTestOne.class.getCanonicalName());
- verify(tracker,
times(1)).setCurrentClassUnderTest(ClassExtendingAbstractClass.class.getCanonicalName());
-
- }
-
- @Test
- public void shouldKeepTrackAndRunTestForAllClassesUnderTest() throws
Exception {
- JunitTestRunner runner = new JunitTestRunner();
-
- runner.runTest(TestClassOne.class.getCanonicalName(), "testMethodOne",
CLASS_UNDERTEST_ONE_METADATA, CLASS_UNDERTEST_TWO_METADATA);
-
- verify(tracker,
times(1)).setCurrentClassUnderTest(CLASS_UNDERTEST_ONE_METADATA.getClazz());
- verify(tracker,
times(1)).setCurrentClassUnderTest(CLASS_UNDERTEST_TWO_METADATA.getClazz());
-
- }
-
- @Test
- public void shouldReturnTrueIfAllTestPasses() {
- JunitTestRunner runner = new JunitTestRunner();
-
- boolean result =
runner.runTest(TestClassOne.class.getCanonicalName(), "testMethodTwo",
CLASS_UNDERTEST_ONE_METADATA, CLASS_UNDERTEST_TWO_METADATA);
- assertThat(result, is(true));
- }
-
- @Test
- public void shouldReturnTrueIfAtLeasetOneTestDoesntPass() {
- JunitTestRunner runner = new JunitTestRunner();
-
- boolean result =
runner.runTest(TestClassOne.class.getCanonicalName(), "testMethodOne",
CLASS_UNDERTEST_ONE_METADATA, CLASS_UNDERTEST_TWO_METADATA);
- assertThat(result, is(false));
- }
-
- @Test
- public void shouldReturnTrueIfSingleTestMethodPasses() {
- JunitTestRunner runner = new JunitTestRunner();
-
- boolean result =
runner.runTest(TestClassOne.class.getCanonicalName(), "testMethodTwo");
- assertThat(result, is(true));
- }
-
- @Test
- public void shouldReturnTrueIfSingleTestMethodDoesntPass() {
- JunitTestRunner runner = new JunitTestRunner();
-
- boolean result =
runner.runTest(TestClassOne.class.getCanonicalName(), "testMethodOne");
- assertThat(result, is(false));
- }
-
-}
=======================================
---
/trunk/src/main/java/it/javalinux/testedby/metadata/ClassLinkMetadata.java
Mon Oct 19 03:43:14 2009
+++
/trunk/src/main/java/it/javalinux/testedby/metadata/ClassLinkMetadata.java
Mon Apr 19 13:49:21 2010
@@ -29,7 +29,7 @@
private static final long serialVersionUID = 1L;

private String clazz;
-
+
/**
* @param status
* @param clazz
@@ -45,10 +45,37 @@
public String getClazz() {
return clazz;
}
+
+
+

/**
* {@inheritDoc}
*
+ * @see java.lang.Object#toString()
+ */
+ @Override
+ public String toString() {
+ return "ClassLinkMetadata [clazz=" + clazz + "]";
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see
it.javalinux.testedby.metadata.Mergeable#merge(it.javalinux.testedby.metadata.Mergeable)
+ */
+ public boolean merge(Mergeable right) {
+ if (right instanceof ClassLinkMetadata && this.equals((right))) {
+ return this.getStatus().merge(((ClassLinkMetadata)
right).getStatus());
+ } else {
+ return false;
+ }
+
+ }
+
+ /**
+ * {@inheritDoc}
+ *
* @see java.lang.Object#hashCode()
*/
@Override
@@ -56,12 +83,13 @@
final int prime = 31;
int result = 1;
result = prime * result + ((clazz == null) ? 0 : clazz.hashCode());
+ result = prime * result + ((status == null) ? 0 : status.hashCode());
return result;
}

/**
* {@inheritDoc}
- *
+ *
* @see java.lang.Object#equals(java.lang.Object)
*/
@Override
@@ -78,31 +106,12 @@
return false;
} else if (!clazz.equals(other.clazz))
return false;
- return true;
- }
-
- /**
- * {@inheritDoc}
- *
- * @see java.lang.Object#toString()
- */
- @Override
- public String toString() {
- return "ClassLinkMetadata [clazz=" + clazz + "]";
- }
-
- /**
- * {@inheritDoc}
- *
- * @see
it.javalinux.testedby.metadata.Mergeable#merge(it.javalinux.testedby.metadata.Mergeable)
- */
- public boolean merge(Mergeable right) {
- if (right instanceof ClassLinkMetadata && this.equals((right))) {
- return this.getStatus().merge(((ClassLinkMetadata)
right).getStatus());
- } else {
+ if (status == null) {
+ if (other.status != null)
+ return false;
+ } else if (!status.equals(other.status))
return false;
- }
-
+ return true;
}

}
=======================================
--- /trunk/src/main/java/it/javalinux/testedby/metadata/LinkMetadata.java
Sun Oct 18 02:49:57 2009
+++ /trunk/src/main/java/it/javalinux/testedby/metadata/LinkMetadata.java
Mon Apr 19 13:49:21 2010
@@ -28,7 +28,7 @@

private static final long serialVersionUID = 1L;

- private StatusMetadata status;
+ protected StatusMetadata status;

public LinkMetadata(StatusMetadata status) {
this.status = status;
=======================================
---
/trunk/src/main/java/it/javalinux/testedby/runner/impl/JunitTestRunner.java
Wed Apr 14 09:27:29 2010
+++
/trunk/src/main/java/it/javalinux/testedby/runner/impl/JunitTestRunner.java
Mon Apr 19 13:49:21 2010
@@ -82,12 +82,12 @@
* String, ClassLinkMetadata...)
*/
@Override
- public boolean runTest(String testClass, String methodName,
ClassLinkMetadata... classesUnderTest) {
+ public boolean runTest(String testClass, String methodName,
ClassLinkMetadata... unfilteredClassesUnderTest) {
try {
-
+ List<ClassLinkMetadata> classesUnderTest =
filterOnlyFromAnnotation(unfilteredClassesUnderTest);
Request request =
Request.method(Thread.currentThread().getContextClassLoader().loadClass(testClass),
methodName);
boolean status = true;
- if (classesUnderTest.length > 0) {
+ if (classesUnderTest.size() > 0) {
for (ClassLinkMetadata classLinkMetadata : classesUnderTest) {
if (!classLinkMetadata.getStatus().isOnAbstract()) {
InvocationTracker tracker = InvocationTracker.getInstance();
@@ -131,4 +131,15 @@
}
return list;
}
-}
+
+ List<ClassLinkMetadata> filterOnlyFromAnnotation(ClassLinkMetadata...
classLinks) {
+ LinkedList<ClassLinkMetadata> filteredCollection = new
LinkedList<ClassLinkMetadata>();
+ for (ClassLinkMetadata classLinkMetadata : classLinks) {
+ if (classLinkMetadata.getStatus().isFromAnnotation()) {
+ filteredCollection.add(classLinkMetadata);
+ }
+ }
+ return filteredCollection;
+ }
+
+}

--
You received this message because you are subscribed to the Google Groups "testedby-commit" group.
To post to this group, send email to testedb...@googlegroups.com.
To unsubscribe from this group, send email to testedby-comm...@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/testedby-commit?hl=en.

Reply all
Reply to author
Forward
0 new messages