关于Java应用程序测试和调试的一组问题
1)是否可以跟踪应用程序引发的异常数?我可以写一个测试来打印这样一个数字吗?未捕获的异常会停止执行,因此很容易,但是捕获的异常又如何呢
2)如何编写一个测试,告诉我一秒钟内完成的活动数量?例如,代码每秒引发的平均异常数、每秒保存的平均实体数、每秒登录到站点的平均用户数等。例如,我想在我的webapp上施加一些负载,并找出在这种负载下它每秒可以保存多少实体,限制在哪里等
3)我想知道某行执行了多少次。我能在不更改代码的情况下完成吗
4)我希望在不更改代码(*)的情况下,在代码执行期间查看表达式的值
5)我不希望在断点中停止应用程序的执行,但仅当某个表达式或变量等于某个值时(例如,如果该变量为null,则停止应用程序)。当然,不需要更改代码
(*)也许我可以用手表来做这个。Idea调试器具有此功能,我可以在执行过程中看到某些表达式的值。但当执行第二次到达该行时,旧值被清除。如何以动态的方式看待表达式值
# 1 楼答案
当你抓住它们时,数一数
数完后,打印出来。在单元测试中打印数字不是很有用,因为它们通常被忽略。它必须是自动化的
您是捕获异常的人,因此您必须检查代码以记录此异常。如果它不是你的代码,你不需要担心测试它
重复执行一项任务一秒钟,然后打印它在一秒钟内执行了多少次。对于长时间运行的测试,最好运行几秒钟并将其平均。同样,仅仅打印这个数字并不总是很有用
我们讨论的是单元测试还是其他方法
对于单元测试,可以使用字节码操作,但这比更改代码复杂100倍
您可以使用代码覆盖率工具来提供这些信息和报告。e、 g.艾玛报告或想法内置于其中。注意:这不是免费版本内置的
对于表达式和调试接口,可以使用beanshell实现这一点。同样,这比在代码中添加一行要复杂1000倍
通常,您会为此使用调试器
在不更改代码的情况下,无法停止
大多数调试器都支持这一点,但它们是通过在停止代码后执行检查并在不满足条件时自动继续来实现的
使用手表而不是计算表达式