Unitils

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

Details

  • Type: Bug Bug
  • Status: Closed Closed
  • Priority: Major Major
  • Resolution: Fixed
  • Affects Version/s: 2.2
  • Fix Version/s: 2.3
  • Component/s: mock
  • 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
    Show
    @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

Activity

Hide
Tim Ducheyne added a comment - 22/May/09 11:25 AM
The problem was caused by the restore behavior in @InjectIntoStaticByType
The wrapped type was not taken into account
Show
Tim Ducheyne added a comment - 22/May/09 11:25 AM The problem was caused by the restore behavior in @InjectIntoStaticByType The wrapped type was not taken into account

People

  • Assignee:
    Unassigned
    Reporter:
    Tim Ducheyne
  • Votes:
    0
    Watchers:
    0

Dates

  • Created:
    22/May/09 10:21 AM
    Updated:
    22/May/09 11:25 AM
    Resolved:
    22/May/09 11:25 AM