如何对预期在小程序安全管理器中运行的 Java 代码进行单元测试
Posted
技术标签:
【中文标题】如何对预期在小程序安全管理器中运行的 Java 代码进行单元测试【英文标题】:How to unit test Java code that is expected to run within an applet Security Manager 【发布时间】:2010-01-26 10:43:36 【问题描述】:我有一些 Java 库代码,它们有时会作为未签名的小程序运行。因此,并不总是允许执行某些操作(例如检查系统属性)。
我想使用类似 Applet 的安全管理器运行一些单元测试,以便我可以验证代码是否未执行任何受限操作,或正确处理任何安全异常。
使用真实的安全管理器配置运行这些单元测试的最佳方式是什么?最好的解决方案是可以与 JUnit 集成的东西。
【问题讨论】:
看看这是否可以帮助你***.com/questions/433065/… 谢谢。我不是想测试这样的小程序(例如,我的代码中没有 UI),它是一些库代码,有时链接到小程序并在小程序中运行(有时由其他人)。我在 FEST 文档中看不到任何关于 SecurityManager 的内容,但我会多看看。 【参考方案1】:不是这样的解决方案,但您不能实现自己的 SecurityManager 子类,也许将所有调用委托给“伪安全管理器”,而后者又会被 EasyMock/类似物模拟?然后,您可以使用 System.setSecurityManager()
设置此 SecurityManager。
如果您知道您的小程序应该能够做什么,那么您可以根据您的要求使测试失败。
我可能错过了您想要实现的目标,但这似乎是一种可能的方法。
【讨论】:
您知道一种创建现实 Applet 安全管理器的方法吗?我有点讨厌自己尝试重现 Applet 安全规则,即使我做对了,我也可能很难让它们保持最新。到目前为止,我采用的方法是在安全特权操作和我的其余代码之间定义一个瘦适配器层,然后我模拟该层。但我想我真的很想测试我的代码与真实(或现实的)SecurityManager 之间的集成。 恐怕我没有 - 是否可以通过类名实例化 Applet 安全管理器?也许您可以从测试小程序中找到它?以上是关于如何对预期在小程序安全管理器中运行的 Java 代码进行单元测试的主要内容,如果未能解决你的问题,请参考以下文章
在运行时,从 .Net 应用程序,如何设置任务管理器中显示的“描述”字段?
小程序如何使用linq.js,在小程序中引用linq.js后运行报错