用JAVA编程验证intValue()返回值是不是有四舍五入?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用JAVA编程验证intValue()返回值是不是有四舍五入?相关的知识,希望对你有一定的参考价值。

bigDecimal = bigDecimal.setScale(2, BigDecimal.ROUND_HALF_UP);
//保留两位小数且向上进位的四舍五入,四舍五入后要重新赋值,不仅只setScale.
参考技术A 按你的描述应该是会回滚的,我用的是注解方式不知道跟xml配置差别大不大,以下是我的配置方式
@transactional(propagation=propagation.requires_new,rollbackfor=exception.class)
会不会是异常定义得不够广,你换成exception试试!

用 phpunit 模拟 symfony 安全,返回空值而不是布尔值(不使用预言)

【中文标题】用 phpunit 模拟 symfony 安全,返回空值而不是布尔值(不使用预言)【英文标题】:Mocking symfony security with phpunit, return null value instead of bool (not using prophecy) 【发布时间】:2021-08-07 21:57:54 【问题描述】:

我有一个验证器,它调用 symfony 安全组件的多个方法。

我正在用 phpunit 模拟它。 getUser 工作正常,但我似乎无法使用 isGranted 返回布尔值。 它仅适用于willReturn(true)

如果我使用will($this->returnValueMap($map)),它会说: TypeError: Return value of Mock_Security_ccdbfb27::isGranted() must be of the type bool, null returned

如果我使用willReturn($this->returnValueMap($map)),我会得到: Method isGranted may not return value of type PHPUnit\Framework\MockObject\Stub\ReturnValueMap, its return declaration is ": bool"

如果我尝试使用回调,也会出现同样的问题。

private function getValidator(string $loggedUserRole, bool $expectsViolation)
    
        $map = [
            ['ROLE_ADMIN', $loggedUserRole === 'ADMIN'],
            ['ROLE_MANAGER', ($loggedUserRole === 'ADMIN' || $loggedUserRole === 'MANAGER')],
        ];

        $security = $this->createMock(Security::class);
        $security
            ->method('getUser')
            ->willReturn($loggedUserRole === 'ANONYMOUS'? null : (new User()));

        $security
            ->expects($this->any())
            ->method('isGranted')
            ->will($this->returnValueMap($map));

        $validator = new ValidatorClass($security);
        $context = $this->getContext($expectsViolation);
        $validator->initialize($context);
        return $validator;
    

【问题讨论】:

【参考方案1】:

我遇到了类似的问题。

“isGranted”方法有第二个输入参数(主题),默认为“null”。您必须将此作为第二个值包含在参数映射中,第三个将作为结果。

所以在你的情况下:

$map = [
  ['ROLE_ADMIN', null,  $loggedUserRole === 'ADMIN'],
  ['ROLE_MANAGER', null, ($loggedUserRole === 'ADMIN' || $loggedUserRole === 'MANAGER')],
];

【讨论】:

以上是关于用JAVA编程验证intValue()返回值是不是有四舍五入?的主要内容,如果未能解决你的问题,请参考以下文章

java 程序无论是不是有异常都有返回值?代码怎么处理?

java复习题

java验证课上代码

线程编程之父子线程(java编程)

《java第二次实验》

JAVA第二次作业