我正在尝试将我的应用程序从java 7迁移到java 8,并尝试利用使用java 8 lambdas所提供的简洁性。但是单元测试成了我的噩梦,因为我不能从测试类中引用函数/谓词。我有以下问题:
我之前的代码:
public String myMethod(int v1){
//Some logic
}Usign java8:
Fucntion<Integer,String> myMethod = (i) -> {
//Same some logic
};因此,单元测试对我来说就成了一夜之间的事情。我使用Junit,Mockito进行单元测试。
TestClass:
@RunWith(JunitMockitoRunner.class)
public class TestClass{
@InjectMock
Testclass mock;
// want to test my method which i am trying to write using Fucntion<I,O>
}另外,如果我使用java7方式,而不是使用lambda或fucntional Interface,那么性能会更好吗?
提前感谢!
发布于 2019-04-29 23:12:26
如果方法和函数都定义在同一个作用域中,那么我在测试它们时看不到太大的区别。如果myMethod被定义为实例变量,您可以简单地调用它并断言结果,如下所示:
class ClassUnderTest {
Fucntion<Integer,String> myMethod = (i) -> {
//Same some logic
};
}
class ClassUnderTestTest {
ClassUnderTest classUnderTest = // instantiate object
String actualResult = classUnderTest.myMethod(1);
assertEquals(expectedResult, actualResult);
}如果ClassUnderTest有一些myMethod依赖的其他属性,您可以使用Mockito模拟它们。
https://stackoverflow.com/questions/55895563
复制相似问题