我的类有一个方法,它尝试执行一些操作,并在所有操作完成后返回nano时间。当测试这个方法时,我遇到了一个问题,测试结果总是不同的(因为取决于当前时间)。
如何正确测试返回值?没有PowerMock有办法吗?
示例类:
class ExampleClass {
public long performOperationsAndGetTimeNano(){
//some operations...
return Instant.now().getNano();
}
...
}
示例测试:
@ExtendWith(MockitoExtension.class)
class ExampleTest{
private static final long EXPECTED_TIME = 555927900L;
private ExampleClass subject;
//init...
@Test
void performOperationAndGetTimeNano(){
long actualTime = subject.performOperationAndGetTimeNano(); //always different result
assertEquals(EXPECTED_TIME, actualTime); //always fails
}
}
感谢您的回答!
问题:如何正确测试返回值?修复:EXPECTED\u TIME=EXPECTED\u TIME(CURTIME\u IN\u NANOSEC-EXPECTED\u TIME),时间位数至纳秒(偏移时间至当前纳秒加至EXPECTED\u TIME),实际\u TIME=主题。performOperationAndGetTimeNano()--这会给出直到纳秒的时间数字
私有静态最终长EXPECTED_TIME=getVisectedLongTime();
模拟java类中使用的long getExpectedLongTime(){}方法提供了如上所述的预期时间。注意,在Mockito中,每个输入数据都由具有示例输入数据的Mock java类模拟。
B.没有PowerMock有办法吗?修复:是的,像上面一样简单的JUnit。不需要模拟的java类,我们可以像上面一样编写单独的方法和使用。
希望我回答了你的两个问题。
问题内容: 我需要测试一个函数,该函数的结果将取决于当前时间(使用Joda time的时间)。 是否可以使用(例如使用Mockito)存根/模拟系统时间,以便我可以可靠地测试该功能? 问题答案: Joda time支持通过类的和方法设置“假”当前时间。 参见https://www.joda.org/joda- time/apidocs/org/joda/time/DateTimeUtils.htm
问题内容: 是否可以在不设置数据库的情况下编写Django单元测试?我想测试不需要设置数据库的业务逻辑。尽管设置数据库的速度很快,但在某些情况下我真的不需要它。 问题答案: 你可以继承DjangoTestSuiteRunner的子类,并覆盖setup_databases和teardown_databases方法以进行传递。 创建一个新的设置文件,并将TEST_RUNNER设置为刚创建的新类。然后,
是否有人能够从Maven Build获得JaCoCo中JMockit和Powermock单元测试的复盖范围? 我有一个Powermock单元测试的现有测试集,我希望逐步将其迁移到JMockit。但是我需要能够在一个报告中看到所有单元测试的测试覆盖范围,最好是在Sonar中。 通过将JaCoCo置于“脱机”模式,我确实使JMockit和Powermock测试与Surefire/JaCoCo一起运行(
我正在为一个单例Java类编写单元测试(使用JUnit和Mockito)。我无法更改类实现本身。 使用PowerMockito,它是这样的(并且工作): 要求重写测试,而不使用PowerMock或PowerMockito或任何其他静态模拟API。由于我不能将单例类更改为使用依赖注入,我不确定什么是这样做的好方法。 任何帮助都将不胜感激。
有人能帮我理解testProguardFile的用法吗。假设我在gradle build文件中有调试buildType及其配置如下: 那么为什么我要提供另一个名为test-proguard-rules的proguard规则文件呢。专业测试?如果我理解正确,当我进行仪器测试时,会生成一个单独的apk,但是如果我只进行单元测试,情况是否也是这样? 我希望能够运行“单元测试”(不是仪器测试),但让单元测
我想现在,如果有可能模仿一个类一样 我们的业务逻辑在代码中的某个地方用< code>new myClass()创建了这个对象,因此我不能访问创建的对象来模拟这些方法。有没有办法替换整个类或者覆盖那些方法。我正在使用mockito,我只找到了这样做的例子 我们不能使用 PowerMock,因为它与我们的测试环境不兼容。 欢迎任何建议。