我有一个类FileGenerator
,我正在为generateFile()
应该执行以下操作的方法编写测试:
1)它应该调用静态方法getBlockImpl(FileTypeEnum)
上BlockAbstractFactory
2)它应该blockList
从子类方法填充变量getBlocks()
3)它应该createFile
从FileHelper
传递String参数的最终帮助器类中调用静态方法
4)它应该BlockController
在blockList中调用每个的run方法
到目前为止,我有这个空方法:
public class FileGenerator {
// private fields with Getters and Setters
public void generateBlocks() {
}
}
我正在使用JUnit,Mockito来模拟对象,并且尝试使用PowerMockito来模拟静态类和最终类(Mockito不能这样做)。
我的问题是:即使没有中的实现,我的第一个测试(getBlockList()
从调用方法BlockAbstractFactory
)也通过了generateBlocks()
。我已经实现了static方法BlockAbstractFactory
(到目前为止,返回null),以避免Eclipse语法错误。
如何测试是否在其中调用了静态方法fileGerator.generateBlocks()
?
到目前为止,这是我的测试班:
@RunWith(PowerMockRunner.class)
public class testFileGenerator {
FileGenerator fileGenerator = new FileGenerator();
@Test
public void shouldCallGetBlockList() {
fileGenerator.setFileType(FileTypeEnum.SPED_FISCAL);
fileGenerator.generateBlocks();
PowerMockito.mockStatic(BlockAbstractFactory.class);
PowerMockito.verifyStatic();
BlockAbstractFactory.getBlockImpl(fileGenerator.getFileType());
}
}
我没有使用PowerMock的经验,但是由于您还没有得到答案,因此我一直在阅读文档,以了解我是否可以在您的帮助中有所帮助。
我发现您需要准备PowerMock,以便我知道需要准备模拟哪些静态方法。像这样:
@RunWith(PowerMockRunner.class)
@PrepareForTest(BlockAbstractFactory.class) // <<=== Like that
public class testFileGenerator {
// rest of you class
}
在这里您可以找到更多信息。
有帮助吗?
模拟由某个类实现的接口方法很容易,但如果有一个类并且有一个静态方法,那么我们如何借助easymock对其进行模拟呢?? supose是一个a类,有一个void retruned方法作为公共静态void methodA(一些参数…){} 我们如何在EasyMock的帮助下模仿A的方法methodA
我试图用Kotlin中的jMockit模拟一个静态方法: 但我得到以下错误:
我试图在静态方法中模拟静态方法。 我想知道不使用任何框架是否可能。 有没有办法达到我的目的?
例如,我有以下课程: 我有一个类使用她的方法: 测试等级: 尝试运行测试时遇到的错误: 组织。莫基托。例外情况。基础MockitoException:对于TesteStatico,静态模拟已在当前线程中注册以创建新的模拟,必须取消注册现有的静态模拟注册 项目中LIB的版本: junit-jupiter 5.5.2 mockito-junit-jupiter 3.2.14 mockito-内联3.2
错误:org.mockito.exceptions.misusing.missingMethodInvocationException:when()需要一个参数,该参数必须是“mock上的方法调用”。例如:when(mock.getArticles()).thenreturn(articles); 此外,此错误可能会出现,因为:1。您可以存根:finall/private/equals()/has
问题内容: 我已经写了一家工厂来生产物体: 我想验证传递给的参数,但不知道如何模拟静态方法。我在测试用例中使用的是和。有没有模拟或验证此特定用例的好方法? 问题答案: 在Mockito上使用PowerMockito。 示例代码: