小编Mik*_*ski的帖子

为什么 javac 允许一些不可能的强制转换而不是其他的?

如果我尝试将 a 转换String为 a java.util.Date,Java 编译器会捕获错误。那么为什么编译器不将以下内容标记为错误呢?

List<String> strList = new ArrayList<>();                                                                      
Date d = (Date) strList;
Run Code Online (Sandbox Code Playgroud)

当然,JVMClassCastException在运行时抛出 a ,但编译器不会标记它。

行为与 javac 1.8.0_212 和 11.0.2 相同。

java casting compiler-errors javac

53
推荐指数
2
解决办法
2230
查看次数

使用PowerMock + EasyMock模拟最终方法

我正试图模拟对最终方法的调用ResourceBundle.getString().使用PowerMock 1.4.12和EasyMock 3.1,呼叫不会被嘲笑; 相反,调用"真实"方法.

我的考试班:

@RunWith(PowerMockRunner.class)
@PrepareForTest(ResourceBundle.class) 
public class TestSuite {
    @Before
    public void setUp() throws Exception {
        ResourceBundle resourceBundleMock = PowerMock.createNiceMock(ResourceBundle.class);
        expect(resourceBundleMock.getString(BundleConstants.QUEUE)).andReturn("Queue");
        PowerMock.replay(resourceBundleMock);

        beanBeingTested.setMessages(resourceBundleMock);
    }
    ...
}
Run Code Online (Sandbox Code Playgroud)

BeanBeingTested中的代码:

private ResourceBundle messages;
...
String label = messages.getString(BundleConstants.QUEUE);
Run Code Online (Sandbox Code Playgroud)

错误信息:

java.util.MissingResourceException: Can't find resource for bundle $java.util.ResourceBundle$$EnhancerByCGLIB$$e4a02557, key Queue
at java.util.ResourceBundle.getObject(ResourceBundle.java:384)
at java.util.ResourceBundle.getString(ResourceBundle.java:344)
at com.yoyodyne.BeanBeingTested.setUpMenus(BeanBeingTested.java:87)
Run Code Online (Sandbox Code Playgroud)

当我逐步完成测试用例时,调试器会显示类型beanBeingTested.messages为"EasyMock for class java.util.ResourceBundle",因此模拟正确注入.(此外,在设置期间呼叫getString()内的expect()呼叫没有错误).

使用简单的模拟而不是一个很好的模拟,我得到以下错误:

java.lang.AssertionError: 
  Unexpected method call handleGetObject("Queue"): 
    getString("Queue"): expected: 1, actual: 0
Run Code Online (Sandbox Code Playgroud)

知道我做错了什么吗?

谢谢.

easymock powermock

6
推荐指数
1
解决办法
5309
查看次数

标签 统计

casting ×1

compiler-errors ×1

easymock ×1

java ×1

javac ×1

powermock ×1