草庐IT

java - 静态方法是 DI 反模式吗?

我是一名Java开发人员,开始掌握依赖注入(inject)的全部威力,我突然意识到没有办法注入(inject)静态方法。所以我开始思考:静态方法是DI反模式吗?更重要的是:如果我接受依赖注入(inject),这是否意味着我需要停止编写静态方法?我问是因为在单元测试期间没有办法模拟它们并注入(inject)模拟静态,这对我来说是一个巨大的关闭。编辑:我知道“包装”和注入(inject)现有静态方法的常用方法是这样的:publicclassFoo{publicstaticvoidbar(){...}}publicinterfaceFooWrapper{publicvoidbar();}pu

java - 静态方法是 DI 反模式吗?

我是一名Java开发人员,开始掌握依赖注入(inject)的全部威力,我突然意识到没有办法注入(inject)静态方法。所以我开始思考:静态方法是DI反模式吗?更重要的是:如果我接受依赖注入(inject),这是否意味着我需要停止编写静态方法?我问是因为在单元测试期间没有办法模拟它们并注入(inject)模拟静态,这对我来说是一个巨大的关闭。编辑:我知道“包装”和注入(inject)现有静态方法的常用方法是这样的:publicclassFoo{publicstaticvoidbar(){...}}publicinterfaceFooWrapper{publicvoidbar();}pu

java - 修改 void 函数的输入参数,然后读取

我有一个相当复杂的java函数,我想使用jUnit进行测试,为此我正在使用Mockito。这个函数看起来像这样:publicvoidmyFunction(Objectparameter){...doStuff();...convert(input,output);...parameter.setInformationFrom(output);}函数convert根据输入设置输出的属性,它是一个void类型的函数,尽管“输出”参数是被函数使用的,就好像它是由函数返回的一样。这个转换函数是我想要模拟的,因为我不需要依赖于测试的输入,但我不知道该怎么做,因为我对Mockito不是很熟悉。我见

java - 修改 void 函数的输入参数,然后读取

我有一个相当复杂的java函数,我想使用jUnit进行测试,为此我正在使用Mockito。这个函数看起来像这样:publicvoidmyFunction(Objectparameter){...doStuff();...convert(input,output);...parameter.setInformationFrom(output);}函数convert根据输入设置输出的属性,它是一个void类型的函数,尽管“输出”参数是被函数使用的,就好像它是由函数返回的一样。这个转换函数是我想要模拟的,因为我不需要依赖于测试的输入,但我不知道该怎么做,因为我对Mockito不是很熟悉。我见

java - 使用@Mock 和@InjectMocks

我目前正在研究Mockito框架,并使用Mockito创建了几个测试用例。但后来我读到,我可以使用@Mock和@InjectMocks而不是调用mock(SomeClass.class)-我唯一的需要做的是用@RunWith(MockitoJUnitRunner.class)注释我的测试类或使用MockitoAnnotations.initMocks(this);在@Before方法。但它不起作用-@Mock似乎不起作用!这是我的2个代码修订版-一个使用注释,一个没有。我做错了什么?publicclassReportServiceImplTestMockito{privateTaskS

java - 使用@Mock 和@InjectMocks

我目前正在研究Mockito框架,并使用Mockito创建了几个测试用例。但后来我读到,我可以使用@Mock和@InjectMocks而不是调用mock(SomeClass.class)-我唯一的需要做的是用@RunWith(MockitoJUnitRunner.class)注释我的测试类或使用MockitoAnnotations.initMocks(this);在@Before方法。但它不起作用-@Mock似乎不起作用!这是我的2个代码修订版-一个使用注释,一个没有。我做错了什么?publicclassReportServiceImplTestMockito{privateTaskS

java - Mockito 可以验证参数是否具有某些属性/字段?

说我在mock这个类FooclassFoo{publicvoiddoThing(Barbar){//...}}这是条形码classBar{privateinti;publicintgetI(){returni;}publicvoidsetI(inti){this.i=i;}}我知道我可以使用Mockito的验证功能来查看是否使用Bar或任何的特定实例在模拟上调用了Foo#doThing(Bar)Bar与Mockito.any(Bar.class),但是有什么方法可以确保它被任何Bar调用但具有特定值对于i或Bar#getI()?我知道的都是可能的:FoomockedFoo=mock(F

java - Mockito 可以验证参数是否具有某些属性/字段?

说我在mock这个类FooclassFoo{publicvoiddoThing(Barbar){//...}}这是条形码classBar{privateinti;publicintgetI(){returni;}publicvoidsetI(inti){this.i=i;}}我知道我可以使用Mockito的验证功能来查看是否使用Bar或任何的特定实例在模拟上调用了Foo#doThing(Bar)Bar与Mockito.any(Bar.class),但是有什么方法可以确保它被任何Bar调用但具有特定值对于i或Bar#getI()?我知道的都是可能的:FoomockedFoo=mock(F

java - 形成 Mockito "grammars"

Mockito似乎是一个非常漂亮的Javastub/模拟框架。唯一的问题是我找不到任何关于使用他们的API的最佳方式的具体文档。测试中常用的方法包括:doXXX(???):Stubberwhen(T):OngoingStubbingthen(T):OngoingStubbingverify(???):Tgiven(T):BDDOngoingStubbingwillXXX(???):BDDStubber当您在实践中看到Mockito示例时,您会看到如下代码:when(yourMethod()).thenReturn(5);从我读过的所有文档中,我已经确定了Mockito“语法”的几个“模

java - 形成 Mockito "grammars"

Mockito似乎是一个非常漂亮的Javastub/模拟框架。唯一的问题是我找不到任何关于使用他们的API的最佳方式的具体文档。测试中常用的方法包括:doXXX(???):Stubberwhen(T):OngoingStubbingthen(T):OngoingStubbingverify(???):Tgiven(T):BDDOngoingStubbingwillXXX(???):BDDStubber当您在实践中看到Mockito示例时,您会看到如下代码:when(yourMethod()).thenReturn(5);从我读过的所有文档中,我已经确定了Mockito“语法”的几个“模