Mockito注释@spy
或@injectmocks
不能用于接口:
public interface MyService() {}
public class MyServiceImpl implements MyService {}
@RunWith(MockitoJUnitRunner.class)
public class MyServiceTest {
@Spy
@InjectMocks
private MyService myService; // won't work
@Mock
MyDao myDao;
// tests
}
@InjectMocks
private MyService myService = new MyServiceImpl(); // Program against Interface
解决方案2:
@Spy
@InjectMocks
private MyServiceImpl myService; // Program against implementation
我的问题是,使用解决方案2并让Mockito处理实例化(但这意味着声明一个实现而不是一个接口),还是使用带有接口的解决方案1并自己声明一个实现,这是一个好主意。
谢谢所有的回复伙计们。帮了我大忙。我现在结束这个问题。
基本上,我应该对实现进行测试。我还想提到这个问题,它包含一些更有用的信息。
我的配置是:Wildfly8.2.0,Weld 是否可以在CDI中注入bean而不是在其接口中注入?
如何区分模拟不同的impl类,从而调用impl类的方法。我应该像下面这样做吗。 对我没有用。任何一个都抛出空指针异常。请指教。
我使用JUnit4和Mockito创建了一个Spring Boot2应用程序。当我测试某种方法时。会出现这样的例外: 这是我的测试代码 SuveryService.java SurveyRepository.java 我引用了这篇文章Mockito NullPointerException,但这个问题仍然存在。任何帮助都将被应用。
# 11.5 测试一个值是否实现了某个接口 这是 11.3 类型断言中的一个特例:假定 v 是一个值,然后我们想测试它是否实现了 Stringer 接口,可以这样做: type Stringer interface { String() string } if sv, ok := v.(Stringer); ok { fmt.Printf("v implements Strin
所以基本上我有一个公共的静态空main方法,它创建一个框架和一个级别,级别是一个面板,然后添加到jframe中,但在代码之后似乎不会检查我在main中的time循环,我知道它没有,因为只要框架是可见的,我的time循环就应该被检查,如果它到达这一点而它没有,它应该在控制台窗口中打印一行。任何帮助都将不胜感激!同样是的,我知道打印行会弹出一个控制台窗口窗口,而不是实际上把它放在框架中,我为此而声明了
问题内容: 这可能以前曾被问过,但是快速搜索只提出了询问C#的相同问题。看这里。 我基本上想做的是检查给定对象是否实现了给定接口。 我有点想出了一个解决方案,但这不足以在if或case语句中频繁使用它,我想知道Java是否没有内置解决方案。 编辑:好的,谢谢您的回答。特别是对于Damien Pollet和Noldorin,您让我重新考虑了设计,因此我不再测试接口。 问题答案: 该运营商确实在工作安