Java @TestSubject和@injectmock之间的区别?

Java @TestSubject和@injectmock之间的区别?,java,junit,java-8,mockito,Java,Junit,Java 8,Mockito,在学习Mockito时,我在下面的参考文献中找到了两种不同的注释@TestSubject和@InjectMocks。 @InjectMocks注释工作完全正常,如教程中所述,但是@TestSubject不工作,而是显示错误。 我得到的TestSubject无法解析为下面代码段中@TestSubject注释的类型错误,但是我已经完成了正确的设置(包括构建路径中的Junit&Mockitojar文件) 我这里有两个问题。 1。有没有人遇到过类似的问题?如果是,那么根本原因和解决方案是什么? 2.如

在学习Mockito时,我在下面的参考文献中找到了两种不同的注释@TestSubject@InjectMocks



@InjectMocks
注释工作完全正常,如教程中所述,但是
@TestSubject
不工作,而是显示错误。
我得到的
TestSubject无法解析为下面代码段中
@TestSubject
注释的类型
错误,但是我已经完成了正确的设置(包括构建路径中的Junit&Mockitojar文件)

我这里有两个问题。
1。有没有人遇到过类似的问题?如果是,那么根本原因和解决方案是什么?

2.如果它工作正常,那么
@TestSubject
@InjectMocks
注释之间的区别是什么?

是EasyMock的注释,它与Mockito的注释相同。如果您使用的是Mockito,那么您必须使用
@InjectMocks

我真的找不到任何证据证明此注释实际上作为Mockito的一部分存在。您链接到的教程甚至没有为其定义导入语句。对我来说似乎是一个打字错误,例如,它应该是
@Spy
import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.Mockito;
import org.mockito.runners.MockitoJUnitRunner;

import com.infosys.junitinteg.action.MathApplication;
import com.infosys.junitinteg.service.CalculatorService;

@RunWith(MockitoJUnitRunner.class)
public class MathApplicationTester {

    // @TestSubject annotation is used to identify class which is going to use
    // the mock object
    @TestSubject
    MathApplication mathApplication = new MathApplication();

    // @Mock annotation is used to create the mock object to be injected
    @Mock
    CalculatorService calcService;

    @Test(expected = RuntimeException.class)
    public void testAdd() {
        // add the behavior to throw exception
        Mockito.doThrow(new RuntimeException("Add operation not implemented")).when(calcService).add(10.0, 20.0);

        // test the add functionality
        Assert.assertEquals(mathApplication.add(10.0, 20.0), 30.0, 0);
    }
}