Unit testing 将@Autowired与JMockit一起使用会使@Autowired对象为空

Unit testing 将@Autowired与JMockit一起使用会使@Autowired对象为空,unit-testing,spring,spring-mvc,junit,jmockit,Unit Testing,Spring,Spring Mvc,Junit,Jmockit,我意识到还有另一个问题与这个问题有关。然而,在我的情况下,这是行不通的 我有一个使用spring的maven web/前端项目。我已经通过pom将jmockit添加到jvm中: <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>2.9</ve

我意识到还有另一个问题与这个问题有关。然而,在我的情况下,这是行不通的

我有一个使用spring的maven web/前端项目。我已经通过pom将jmockit添加到jvm中:

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-surefire-plugin</artifactId>
  <version>2.9</version>
  <configuration>
    <argLine>-javaagent:${settings.localRepository}/mockit/jmockit/0.998/jmockit-0.998.jar</argLine>
    <useSystemClassLoader>true</useSystemClassLoader>
    <forkMode>always</forkMode>
  </configuration>
</plugin>
现在,我真的想在测试中模拟FooUtils实例。按照中给出的建议,我尝试:

@RunWith(JMockit.class)
public class BarsControllerTest {

@Autowired BarsController unitUnderTest;
@Mocked Session session;

@Before
public void setUp()
{
    FooUtils foo = new MockUp <FooUtils>() {
        @Mock
        Session getSession() {
            return session;
        }
    }.getMockInstance();

    mockit.Deencapsulation.setField(unitUnderTest, foo);
}
这是非常意外的,因为我希望新的模型{}.getMockInstance返回一些对象。
我想我只是错过了一些关键的部分,但是哪个?

为什么另一个问题的解决方案对你不起作用?@skaffman:我希望我知道:正如我在问题中所说的,我的问题是,模拟对象是空的,我既不期望也不理解。另一个问题中给出的指示让我走到了这一步,但没有走得更远。它解决了另一个人的问题,我很羡慕他,但我不想继续讨论这个问题,因为这个问题已经解决了,为什么另一个问题的解决方案对你不起作用?@skaffman:我希望我知道:正如我在问题中所说的,我的问题是,模拟对象是空的,我既没有预料到也不理解。另一个问题中给出的指示让我走到了这一步,但没有走得更远。这解决了另一个人的问题,我很羡慕他,但我不想继续讨论这个问题,因为他的案子已经解决了
@RunWith(JMockit.class)
public class BarsControllerTest {

@Autowired BarsController unitUnderTest;
@Mocked Session session;

@Before
public void setUp()
{
    FooUtils foo = new MockUp <FooUtils>() {
        @Mock
        Session getSession() {
            return session;
        }
    }.getMockInstance();

    mockit.Deencapsulation.setField(unitUnderTest, foo);
}
java.lang.NullPointerException
    at net.manniche.thebars.BarsControllerTest.setUp(BarsControllerTest.java:40)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.apache.maven.surefire.junit4.JUnit4TestSet.execute(JUnit4TestSet.java:53)
    at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:123)
    at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:104)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.apache.maven.surefire.util.ReflectionUtils.invokeMethodWithArray(ReflectionUtils.java:164)
    at org.apache.maven.surefire.booter.ProviderFactory$ProviderProxy.invoke(ProviderFactory.java:110)
    at org.apache.maven.surefire.booter.SurefireStarter.invokeProvider(SurefireStarter.java:172)
    at org.apache.maven.surefire.booter.SurefireStarter.runSuitesInProcessWhenForked(SurefireStarter.java:78)
    at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:70)