|
|
1
189
的确, Derkeiler.com
2012年12月更新:
Will
提议
in the comments
使用
System Rules
,JUnit(4.9+)规则的集合,用于测试使用
例如:
|
|
|
2
84
图书馆 System Rules 具有名为ExpectedSystemExit的JUnit规则。使用此规则,您可以测试调用System.Exit(…)的代码:
完全公开:我是那个图书馆的作者。 |
|
|
3
31
实际上你
可以
模仿或扼杀
例如,使用 JMockit 你可以写(还有其他方法):
|
|
|
4
29
将“exitManager”注入此方法如何:
生产代码使用exitManagerImpl,测试代码使用exitManagerMock,可以检查是否调用了exit(),以及使用哪个exit代码。 |
|
|
5
20
我们在代码库中使用的一个技巧是将对System.exit()的调用封装在一个可运行的impl中,这个方法默认使用。为了进行单元测试,我们设置了一个不同的模拟可运行的。像这样:
…和JUnit测试方法…
|
|
|
6
5
我喜欢已经给出的一些答案,但我想演示一种不同的技术,这种技术在测试遗留代码时通常很有用。给定的代码如下:
可以进行安全的重构以创建一个包装System.Exit调用的方法:
然后您可以为测试创建一个覆盖exit的伪代码:
这是一种替换测试用例行为的通用技术,我在重构遗留代码时一直使用它。它通常不是我要离开的地方,而是一个中间步骤,以使现有的代码接受测试。 |
|
|
7
5
创建一个包装System.Exit()的模拟类我同意 EricSchaefer . 但是如果你使用一个好的模拟框架 Mockito 一个简单的具体类就足够了,不需要一个接口和两个实现。 正在停止System.Exit()上的测试执行问题:
嘲弄的
解决方案: 您应该按照建议重构此代码 martin :
并且做
代码Wrapper:
主营:
测试:
|
|
|
8
3
快速查看API,可以发现System.Exit会抛出异常,特别是在SecurityManager禁止关闭VM的情况下。也许解决方案是安装这样的管理器。 |
|
|
9
3
可以使用Java安全管理器来防止当前线程关闭Java虚拟机。以下代码应按您的需要执行:
|
|
|
10
3
为了让VONC的答案在JUnit4上运行,我修改了以下代码
|
|
|
11
2
在某些环境中,调用程序使用返回的退出代码(如MS批处理中的错误级别)。在我们的代码中,我们围绕主要方法进行了测试,我们的方法是使用类似的SecurityManager重写,就像在这里的其他测试中使用的一样。 昨晚,我用junit@rule注释把一个小jar放在一起,以隐藏安全管理器代码,并根据预期的返回代码添加期望值。 http://code.google.com/p/junitsystemrules/ |
|
|
12
2
您可以用替换运行时实例来测试System.Exit(..)。 例如,使用testng+mockito:
|
|
|
13
1
调用System.exit()是一个糟糕的实践,除非它是在main()中完成的。这些方法应该抛出一个异常,最终由main()捕获,然后由main()使用适当的代码调用System.Exit。 |
|
14
1
使用
|
|
|
15
1
有个小问题
|
|
|
user107586 · 如何处理等待句柄不会导致无限循环? 1 年前 |
|
|
ron burgundy · 获取-释放语义是否跨线程传递?[副本] 1 年前 |
|
|
BenjiFB · C#内存缓存:在一次操作中追加到列表? 1 年前 |
|
|
András Takács · Python多线程问题 1 年前 |
|
|
András Takács · Python多线程错误 1 年前 |