History | Log In     View a printable version of the current page.  
Issue Details (XML | Word | Printable)

Key: UNI-141
Type: Bug Bug
Status: Closed Closed
Resolution: Fixed
Priority: Major Major
Assignee: Unassigned
Reporter: Tim Ducheyne
Votes: 0
Watchers: 0
Operations

If you were logged in you would be able to see more operations.
Unitils

@InjectIntoByType and @InjectIntoStatic on a field declared as Mock<A> should look for instances of type A instead of Mock<A>

Created: 22/May/09 10:21 AM   Updated: 22/May/09 11:25 AM
Component/s: mock
Affects Version/s: 2.2
Fix Version/s: 2.3


 Description  « Hide

@TestedObjec
private MyClass testedObject;

@InjectIntoByType
private Mock<MyService> mockedMyService


This should inject the mock proxy in the field of testedObject with type MyService.
Currently this will look for a field with type Mock<MyService>





org.unitils.core.UnitilsException: Error while processing @InjectIntoByType annotation on field mockedMyService of class InjectIntoByTypeWithMock: No field with (super)type Mock found in MyClass
at org.unitils.inject.InjectModule.injectByType(InjectModule.java:316)
at org.unitils.inject.InjectModule.injectAllByType(InjectModule.java:186)
at org.unitils.inject.InjectModule.injectObjects(InjectModule.java:159)
at org.unitils.inject.InjectIntoByTypeWithMocksTest.injectIntoByTypeWithMock(InjectIntoByTypeWithMocksTest.java:51)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at org.junit.internal.runners.TestMethod.invoke(TestMethod.java:59)
at org.junit.internal.runners.MethodRoadie.runTestMethod(MethodRoadie.java:98)
at org.junit.internal.runners.MethodRoadie$2.run(MethodRoadie.java:79)
at org.junit.internal.runners.MethodRoadie.runBeforesThenTestThenAfters(MethodRoadie.java:87)
at org.junit.internal.runners.MethodRoadie.runTest(MethodRoadie.java:77)
at org.junit.internal.runners.MethodRoadie.run(MethodRoadie.java:42)
at org.junit.internal.runners.JUnit4ClassRunner.invokeTestMethod(JUnit4ClassRunner.java:88)
at org.junit.internal.runners.JUnit4ClassRunner.runMethods(JUnit4ClassRunner.java:51)
at org.junit.internal.runners.JUnit4ClassRunner$1.run(JUnit4ClassRunner.java:44)
at org.junit.internal.runners.ClassRoadie.runUnprotected(ClassRoadie.java:27)
at org.junit.internal.runners.ClassRoadie.runProtected(ClassRoadie.java:37)
at org.junit.internal.runners.JUnit4ClassRunner.run(JUnit4ClassRunner.java:42)
at com.intellij.rt.junit4.Junit4ClassSuite.run(Junit4ClassSuite.java:99)
at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:40)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:90)
Caused by: org.unitils.core.UnitilsException: No field with (super)type Mock found in MyClass
at org.unitils.inject.util.InjectionUtils.injectIntoFieldByType(InjectionUtils.java:231)
at org.unitils.inject.util.InjectionUtils.injectIntoByType(InjectionUtils.java:143)
at org.unitils.inject.InjectModule.injectByType(InjectModule.java:313)
... 31 more
[ Show » ]
Tim Ducheyne - 22/May/09 10:32 AM org.unitils.core.UnitilsException: Error while processing @InjectIntoByType annotation on field mockedMyService of class InjectIntoByTypeWithMock: No field with (super)type Mock found in MyClass at org.unitils.inject.InjectModule.injectByType(InjectModule.java:316) at org.unitils.inject.InjectModule.injectAllByType(InjectModule.java:186) at org.unitils.inject.InjectModule.injectObjects(InjectModule.java:159) at org.unitils.inject.InjectIntoByTypeWithMocksTest.injectIntoByTypeWithMock(InjectIntoByTypeWithMocksTest.java:51) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at org.junit.internal.runners.TestMethod.invoke(TestMethod.java:59) at org.junit.internal.runners.MethodRoadie.runTestMethod(MethodRoadie.java:98) at org.junit.internal.runners.MethodRoadie$2.run(MethodRoadie.java:79) at org.junit.internal.runners.MethodRoadie.runBeforesThenTestThenAfters(MethodRoadie.java:87) at org.junit.internal.runners.MethodRoadie.runTest(MethodRoadie.java:77) at org.junit.internal.runners.MethodRoadie.run(MethodRoadie.java:42) at org.junit.internal.runners.JUnit4ClassRunner.invokeTestMethod(JUnit4ClassRunner.java:88) at org.junit.internal.runners.JUnit4ClassRunner.runMethods(JUnit4ClassRunner.java:51) at org.junit.internal.runners.JUnit4ClassRunner$1.run(JUnit4ClassRunner.java:44) at org.junit.internal.runners.ClassRoadie.runUnprotected(ClassRoadie.java:27) at org.junit.internal.runners.ClassRoadie.runProtected(ClassRoadie.java:37) at org.junit.internal.runners.JUnit4ClassRunner.run(JUnit4ClassRunner.java:42) at com.intellij.rt.junit4.Junit4ClassSuite.run(Junit4ClassSuite.java:99) at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:40) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at com.intellij.rt.execution.application.AppMain.main(AppMain.java:90) Caused by: org.unitils.core.UnitilsException: No field with (super)type Mock found in MyClass at org.unitils.inject.util.InjectionUtils.injectIntoFieldByType(InjectionUtils.java:231) at org.unitils.inject.util.InjectionUtils.injectIntoByType(InjectionUtils.java:143) at org.unitils.inject.InjectModule.injectByType(InjectModule.java:313) ... 31 more


 All   Comments   Change History      Sort Order:
Tim Ducheyne - 22/May/09 11:25 AM
The problem was caused by the restore behavior in @InjectIntoStaticByType
The wrapped type was not taken into account