[atunit commit] r10 - in trunk: example/atunit/example src/atunit src/atunit/core src/atunit/easymock src/atunit/...

0 views
Skip to first unread message

codesite...@google.com

unread,
Nov 2, 2007, 5:18:45 PM11/2/07
to atunit...@googlegroups.com
Author: logan.johnson
Date: Fri Nov 2 14:17:32 2007
New Revision: 10

Added:
trunk/src/atunit/AtUnit.java
- copied, changed from r8, /trunk/src/atunit/core/AtUnit.java
trunk/src/atunit/Container.java
trunk/src/atunit/ContainerClass.java
trunk/src/atunit/MockFramework.java
trunk/src/atunit/MockFrameworkClass.java
trunk/src/atunit/Stub.java
- copied, changed from r9, /trunk/src/atunit/core/Stub.java
trunk/src/atunit/Unit.java
- copied, changed from r8, /trunk/src/atunit/core/Unit.java
Removed:
trunk/src/atunit/core/AtUnit.java
trunk/src/atunit/core/AtUnitOptions.java
trunk/src/atunit/core/Stub.java
trunk/src/atunit/core/Unit.java
Modified:
trunk/example/atunit/example/ExampleAtUnitTest.java
trunk/example/atunit/example/ExampleEasyMockTest.java
trunk/example/atunit/example/ExampleGuiceAndJMockTest.java
trunk/example/atunit/example/ExampleGuiceTest.java
trunk/example/atunit/example/ExampleJMockTest.java
trunk/src/atunit/core/NoMockFramework.java
trunk/src/atunit/easymock/EasyMockFramework.java
trunk/src/atunit/jmock/JMockFramework.java
trunk/test/atunit/core/AtUnitTests.java
trunk/test/atunit/easymock/EasyMockFrameworkTests.java
trunk/test/atunit/jmock/JMockFrameworkTests.java

Log:
Replaced @AtUnitOptions with simpler, easier to use annotations
@Container, @ContainerClass, @MockFramework, and @MockFrameworkClass.

Moved everything a test writer would use (AtUnit and the annotations)
into the top package.

Modified: trunk/example/atunit/example/ExampleAtUnitTest.java
==============================================================================
--- trunk/example/atunit/example/ExampleAtUnitTest.java (original)
+++ trunk/example/atunit/example/ExampleAtUnitTest.java Fri Nov 2
14:17:32 2007
@@ -22,8 +22,8 @@
import org.junit.Test;
import org.junit.runner.RunWith;

-import atunit.core.AtUnit;
-import atunit.core.Unit;
+import atunit.AtUnit;
+import atunit.Unit;


Modified: trunk/example/atunit/example/ExampleEasyMockTest.java
==============================================================================
--- trunk/example/atunit/example/ExampleEasyMockTest.java (original)
+++ trunk/example/atunit/example/ExampleEasyMockTest.java Fri Nov 2
14:17:32 2007
@@ -23,22 +23,20 @@
import org.junit.Test;
import org.junit.runner.RunWith;

-import atunit.core.AtUnit;
-import atunit.core.AtUnitOptions;
+import atunit.AtUnit;
+import atunit.MockFramework;
+import atunit.Unit;
import atunit.core.Mock;
-import atunit.core.Unit;
-import atunit.core.AtUnitOptions.Mocks;

/**
* This example demonstrates AtUnit's EasyMock integration.
*
- * Notice the AtUnitOptions annotation on this class. The
parameter 'mocks' sets
- * the mock framework you want AtUnit to use.
+ * Note the MockFramework annotation which tells AtUnit to use EasyMock.
*
* @author Logan Johnson <logan....@gmail.com>
*/
@RunWith(AtUnit.class)
-@AtUnitOptions(mocks=Mocks.EASYMOCK)
+@MockFramework(MockFramework.Option.EASYMOCK)
public class ExampleEasyMockTest {

@Unit Manager manager;

Modified: trunk/example/atunit/example/ExampleGuiceAndJMockTest.java
==============================================================================
--- trunk/example/atunit/example/ExampleGuiceAndJMockTest.java (original)
+++ trunk/example/atunit/example/ExampleGuiceAndJMockTest.java Fri Nov
2 14:17:32 2007
@@ -25,13 +25,12 @@

-import atunit.core.AtUnitOptions;
import atunit.core.Mock;
-import atunit.core.AtUnit;
-import atunit.core.Stub;
-import atunit.core.Unit;
-import atunit.core.AtUnitOptions.Container;
-import atunit.core.AtUnitOptions.Mocks;
+import atunit.AtUnit;
+import atunit.Container;
+import atunit.MockFramework;
+import atunit.Stub;
+import atunit.Unit;

import com.google.inject.Binder;
import com.google.inject.Inject;
@@ -48,7 +47,8 @@
* @author Logan Johnson <logan....@gmail.com>
*/
@RunWith(AtUnit.class)
-@AtUnitOptions(mocks=Mocks.JMOCK,container=Container.GUICE)
+@Container(Container.Option.GUICE)
+@MockFramework(MockFramework.Option.JMOCK)
public class ExampleGuiceAndJMockTest implements Module {

@Inject Mockery mockery;

Modified: trunk/example/atunit/example/ExampleGuiceTest.java
==============================================================================
--- trunk/example/atunit/example/ExampleGuiceTest.java (original)
+++ trunk/example/atunit/example/ExampleGuiceTest.java Fri Nov 2
14:17:32 2007
@@ -21,10 +21,9 @@
import org.junit.Test;
import org.junit.runner.RunWith;

-import atunit.core.AtUnit;
-import atunit.core.AtUnitOptions;
-import atunit.core.Unit;
-import atunit.core.AtUnitOptions.Container;
+import atunit.AtUnit;
+import atunit.Container;
+import atunit.Unit;

import com.google.inject.Binder;
import com.google.inject.Inject;
@@ -35,7 +34,7 @@
/**
* This example demonstrates AtUnit's Guice integration.
*
- * Note the AtUnitOptions annotation which tells AtUnit to use Guice.
+ * Note the Container annotation which tells AtUnit to use Guice.
*
* Fields are fully injected by Guice, and are themselves injected
into your
* test. Your test does not have to implement Module, but if it does the
@@ -43,7 +42,7 @@
*
*/
@RunWith(AtUnit.class)
-@AtUnitOptions(container=Container.GUICE)
+@Container(Container.Option.GUICE)
public class ExampleGuiceTest implements Module {

@Inject @Unit InjectedStringHolder holder;

Modified: trunk/example/atunit/example/ExampleJMockTest.java
==============================================================================
--- trunk/example/atunit/example/ExampleJMockTest.java (original)
+++ trunk/example/atunit/example/ExampleJMockTest.java Fri Nov 2
14:17:32 2007
@@ -24,22 +24,20 @@
import org.junit.Test;
import org.junit.runner.RunWith;

-import atunit.core.AtUnit;
-import atunit.core.AtUnitOptions;
+import atunit.AtUnit;
+import atunit.MockFramework;
+import atunit.Unit;
import atunit.core.Mock;
-import atunit.core.Unit;
-import atunit.core.AtUnitOptions.Mocks;

/**
* This example shows AtUnit's JMock integration, with no container.
*
- * Notice the AtUnitOptions annotation on this class. The
parameter 'mocks' sets
- * the mock framework you want AtUnit to use.
+ * Note the MockFramework annotation which tells AtUnit to use JMock.
*
* @author Logan Johnson <logan....@gmail.com>
*/
@RunWith(AtUnit.class)
-@AtUnitOptions(mocks = Mocks.JMOCK)
+@MockFramework(MockFramework.Option.JMOCK)
public class ExampleJMockTest {

/**

Copied: trunk/src/atunit/AtUnit.java (from r8, /trunk/src/atunit/core/AtUnit.java)
==============================================================================
--- /trunk/src/atunit/core/AtUnit.java (original)
+++ trunk/src/atunit/AtUnit.java Fri Nov 2 14:17:32 2007
@@ -14,7 +14,7 @@
* limitations under the License.
*/

-package atunit.core;
+package atunit;

import java.lang.annotation.Annotation;
import java.lang.reflect.Field;
@@ -24,6 +24,12 @@
import org.junit.internal.runners.InitializationError;
import org.junit.internal.runners.JUnit4ClassRunner;

+import atunit.core.Container;
+import atunit.core.IncompatibleAnnotationException;
+import atunit.core.Mock;
+import atunit.core.MockFramework;
+import atunit.core.NoContainer;
+import atunit.core.NoMockFramework;
import atunit.easymock.EasyMockFramework;
import atunit.guice.GuiceContainer;
import atunit.jmock.JMockFramework;
@@ -39,9 +45,8 @@
protected Object createTest() throws Exception {
Class<?> c = getTestClass().getJavaClass();

- AtUnitOptions options = c.getAnnotation(AtUnitOptions.class);
- MockFramework mockFramework = getMockFramework(options);
- Container container = getContainer(options);
+ Container container = getContainerFor(c);
+ MockFramework mockFramework = getMockFrameworkFor(c);

final Map<Field,Object> fieldValues = new HashMap<Field,Object>();

@@ -76,65 +81,52 @@
return unitField;
}

- protected MockFramework getMockFramework(AtUnitOptions options)
throws OptionsException {
- AtUnitOptions.Mocks mocksOption = null;
- Class<? extends MockFramework> mockFrameworkClassOption = null;
- Class<? extends MockFramework> mockFrameworkClass = NoMockFramework.class;
- if ( options != null ) {
- mocksOption = options.mocks();
- mockFrameworkClassOption = options.mockFrameworkClass();
- }
+
+ protected Container getContainerFor(Class<?> testClass) throws
Exception {
+ Class<? extends Container> containerClass = NoContainer.class;

- if ( AtUnitOptions.Mocks.JMOCK.equals(mocksOption) ) {
- mockFrameworkClass = JMockFramework.class;
- } else if ( AtUnitOptions.Mocks.EASYMOCK.equals(mocksOption) ) {
- mockFrameworkClass = EasyMockFramework.class;
- }
+ atunit.Container containerAnno = testClass.getAnnotation(atunit.Container.class);
+ atunit.ContainerClass containerClassAnno = testClass.getAnnotation(atunit.ContainerClass.class);

- if ( (options != null) && (mockFrameworkClassOption !=
NoMockFramework.class) && (mockFrameworkClassOption !=
mockFrameworkClass) ) {
- if ( mockFrameworkClass != NoMockFramework.class ) {
- throw new OptionsException("Options 'mocks'
and 'mockFrameworkClass' conflict");
+ if ( containerAnno != null && containerClassAnno != null )
+ throw new IncompatibleAnnotationException(atunit.Container.class, atunit.ContainerClass.class);
+
+ if ( containerAnno != null ) {
+ switch ( containerAnno.value() ) {
+ case GUICE: containerClass = GuiceContainer.class;
}
- mockFrameworkClass = mockFrameworkClassOption;
}

- try {
- return mockFrameworkClass.newInstance();
- } catch (Exception e) {
- throw new OptionsException("Could not instantiate mock framework
class", e);
+ if ( containerClassAnno != null ) {
+ containerClass = containerClassAnno.value();
}

+ return containerClass.newInstance();
}

-
-
- protected Container getContainer(AtUnitOptions options) throws
OptionsException {
- AtUnitOptions.Container containerOption = null;
- Class<? extends Container> containerClassOption = null;
- Class<? extends Container> containerClass = NoContainer.class;
- if ( options != null ) {
- containerOption = options.container();
- containerClassOption = options.containerClass();
- }
+ protected MockFramework getMockFrameworkFor(Class<?> testClass)
throws Exception {
+ Class<? extends MockFramework> mockFrameworkClass = NoMockFramework.class;

- if ( containerOption == AtUnitOptions.Container.GUICE ) {
- containerClass = GuiceContainer.class;
- }
+ atunit.MockFramework mockFrameworkAnno = testClass.getAnnotation(atunit.MockFramework.class);
+ atunit.MockFrameworkClass mockFrameworkClassAnno = testClass.getAnnotation(atunit.MockFrameworkClass.class);

- if ( (options != null) && (containerClassOption !=
NoContainer.class) && (containerClassOption != containerClass) ) {
- if ( containerClass != NoContainer.class ) {
- throw new OptionsException("Options 'container'
and 'containerClass' conflict");
+ if ( mockFrameworkAnno != null && mockFrameworkClassAnno != null )
+ throw new
IncompatibleAnnotationException(atunit.MockFramework.class, atunit.MockFrameworkClass.class);
+
+ if ( mockFrameworkAnno != null ) {
+ switch ( mockFrameworkAnno.value() ) {
+ case EASYMOCK: mockFrameworkClass = EasyMockFramework.class; break;
+ case JMOCK: mockFrameworkClass = JMockFramework.class; break;
}
- containerClass = containerClassOption;
}

- try {
- return containerClass.newInstance();
- } catch (Exception e) {
- throw new OptionsException("Could not instantiate container class", e);
+ if ( mockFrameworkClassAnno != null ) {
+ mockFrameworkClass = mockFrameworkClassAnno.value();
}

+ return mockFrameworkClass.newInstance();
}
+

@SuppressWarnings("serial")
public static class NoUnitException extends Exception {

Added: trunk/src/atunit/Container.java
==============================================================================
--- (empty file)
+++ trunk/src/atunit/Container.java Fri Nov 2 14:17:32 2007
@@ -0,0 +1,36 @@
+/**
+ * Copyright (C) 2007 Logan Johnson
+ *
+ * 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 atunit;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Inherited;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+@Retention(RetentionPolicy.RUNTIME)
+@Target({ElementType.TYPE})
+@Inherited
+public @interface Container {
+
+ public enum Option {
+ GUICE
+ }
+
+ Option value();
+
+}

Added: trunk/src/atunit/ContainerClass.java
==============================================================================
--- (empty file)
+++ trunk/src/atunit/ContainerClass.java Fri Nov 2 14:17:32 2007
@@ -0,0 +1,32 @@
+/**
+ * Copyright (C) 2007 Logan Johnson
+ *
+ * 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 atunit;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+import atunit.core.Container;
+
+@Retention(RetentionPolicy.RUNTIME)
+@Target({ElementType.FIELD})
+public @interface ContainerClass {
+
+ Class<? extends Container> value();
+
+}

Added: trunk/src/atunit/MockFramework.java
==============================================================================
--- (empty file)
+++ trunk/src/atunit/MockFramework.java Fri Nov 2 14:17:32 2007
@@ -0,0 +1,37 @@
+/**
+ * Copyright (C) 2007 Logan Johnson
+ *
+ * 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 atunit;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Inherited;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+@Retention(RetentionPolicy.RUNTIME)
+@Target({ElementType.TYPE})
+@Inherited
+public @interface MockFramework {
+
+ public enum Option {
+ JMOCK,
+ EASYMOCK
+ }
+
+ Option value();
+
+}

Added: trunk/src/atunit/MockFrameworkClass.java
==============================================================================
--- (empty file)
+++ trunk/src/atunit/MockFrameworkClass.java Fri Nov 2 14:17:32 2007
@@ -0,0 +1,32 @@
+/**
+ * Copyright (C) 2007 Logan Johnson
+ *
+ * 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 atunit;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+import atunit.core.MockFramework;
+
+@Retention(RetentionPolicy.RUNTIME)
+@Target({ElementType.FIELD})
+public @interface MockFrameworkClass {
+
+ Class<? extends MockFramework> value();
+
+}

Copied: trunk/src/atunit/Stub.java (from r9, /trunk/src/atunit/core/Stub.java)
==============================================================================
--- /trunk/src/atunit/core/Stub.java (original)
+++ trunk/src/atunit/Stub.java Fri Nov 2 14:17:32 2007
@@ -14,7 +14,7 @@
* limitations under the License.
*/

-package atunit.core;
+package atunit;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;

Copied: trunk/src/atunit/Unit.java (from r8, /trunk/src/atunit/core/Unit.java)
==============================================================================
--- /trunk/src/atunit/core/Unit.java (original)
+++ trunk/src/atunit/Unit.java Fri Nov 2 14:17:32 2007
@@ -14,7 +14,7 @@
* limitations under the License.
*/

-package atunit.core;
+package atunit;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;

Modified: trunk/src/atunit/core/NoMockFramework.java
==============================================================================
--- trunk/src/atunit/core/NoMockFramework.java (original)
+++ trunk/src/atunit/core/NoMockFramework.java Fri Nov 2 14:17:32 2007
@@ -25,7 +25,7 @@
public Map<Field, Object> getValues(Field[] fields) throws Exception {
for ( Field field : fields ) {
if ( field.getAnnotation(Mock.class) != null ) {
- throw new IllegalAnnotationException(Mock.class, "No mock
framework specified with @AtUnitOptions");
+ throw new IllegalAnnotationException(Mock.class, "No mock
framework specified with @MockFramework or @MockFrameworkClass");
}
}


Modified: trunk/src/atunit/easymock/EasyMockFramework.java
==============================================================================
--- trunk/src/atunit/easymock/EasyMockFramework.java (original)
+++ trunk/src/atunit/easymock/EasyMockFramework.java Fri Nov 2
14:17:32 2007
@@ -22,9 +22,9 @@

import org.easymock.EasyMock;

+import atunit.Stub;
import atunit.core.Mock;
import atunit.core.MockFramework;
-import atunit.core.Stub;

public class EasyMockFramework implements MockFramework {


Modified: trunk/src/atunit/jmock/JMockFramework.java
==============================================================================
--- trunk/src/atunit/jmock/JMockFramework.java (original)
+++ trunk/src/atunit/jmock/JMockFramework.java Fri Nov 2 14:17:32 2007
@@ -27,10 +27,10 @@
import org.jmock.Mockery;
import org.jmock.integration.junit4.JUnit4Mockery;

+import atunit.Stub;
import atunit.core.IncompatibleAnnotationException;
import atunit.core.Mock;
import atunit.core.MockFramework;
-import atunit.core.Stub;

public class JMockFramework implements MockFramework {


Modified: trunk/test/atunit/core/AtUnitTests.java
==============================================================================
--- trunk/test/atunit/core/AtUnitTests.java (original)
+++ trunk/test/atunit/core/AtUnitTests.java Fri Nov 2 14:17:32 2007
@@ -24,7 +24,8 @@
import org.junit.runner.Result;
import org.junit.runner.RunWith;

-import atunit.core.AtUnit;
+import atunit.AtUnit;
+import atunit.Unit;


public class AtUnitTests {

Modified: trunk/test/atunit/easymock/EasyMockFrameworkTests.java
==============================================================================
--- trunk/test/atunit/easymock/EasyMockFrameworkTests.java (original)
+++ trunk/test/atunit/easymock/EasyMockFrameworkTests.java Fri Nov 2
14:17:32 2007
@@ -25,12 +25,10 @@
import org.junit.runner.Result;
import org.junit.runner.RunWith;

-import atunit.core.AtUnit;
-import atunit.core.AtUnitOptions;
+import atunit.AtUnit;
+import atunit.MockFramework;
+import atunit.Unit;
import atunit.core.Mock;
-import atunit.core.Unit;
-import atunit.core.AtUnitOptions.Mocks;
-

public class EasyMockFrameworkTests {

@@ -58,7 +56,7 @@
protected static class TestClasses {

@RunWith(AtUnit.class)
- @AtUnitOptions(mocks=Mocks.EASYMOCK)
+ @MockFramework(MockFramework.Option.EASYMOCK)
public static class OptionMocks {
@Unit protected String unit;
@Mock protected StringFactory stringFactory;
@@ -79,7 +77,7 @@
}

@RunWith(AtUnit.class)
- @AtUnitOptions(mockFrameworkClass=EasyMockFramework.class)
+ @MockFramework(MockFramework.Option.EASYMOCK)
public static class OptionMockFrameworkClass {
@Unit protected String unit;
@Mock protected StringFactory stringFactory;

Modified: trunk/test/atunit/jmock/JMockFrameworkTests.java
==============================================================================
--- trunk/test/atunit/jmock/JMockFrameworkTests.java (original)
+++ trunk/test/atunit/jmock/JMockFrameworkTests.java Fri Nov 2
14:17:32 2007
@@ -28,12 +28,11 @@
import org.junit.runner.Result;
import org.junit.runner.RunWith;

-import atunit.core.AtUnit;
-import atunit.core.AtUnitOptions;
+import atunit.AtUnit;
+import atunit.MockFramework;
+import atunit.Unit;
import atunit.core.IncompatibleAnnotationException;
import atunit.core.Mock;
-import atunit.core.Unit;
-import atunit.core.AtUnitOptions.Mocks;

public class JMockFrameworkTests {

@@ -82,7 +81,7 @@
}
}

- @AtUnitOptions(mocks=Mocks.JMOCK)
+ @MockFramework(MockFramework.Option.JMOCK)
public static abstract class AbstractJMockTest extends
AbstractAtUnitTest {

}

Reply all
Reply to author
Forward
0 new messages