我有一个应用程序,该应用程序从队列中接收对象,对其进行转换并将其发布在主题上。这是一个消息驱动的bean(春季)消息侦听器容器,带有相当数量的内部bean。
产品盒上最近发生了一些奇怪的活动。我们要检查这是否是并发问题。很棒,但是不是我以前做过的。
我的方法是在应用程序中加载大量消息。编写一个软件来聆听它的发布主题。消耗它们并通过类似于Junit测试的方法对其进行处理,该测试将对象属性与预期结果进行比较。
我在上面添加了上述内容,以解决这个问题,但是基本上市场上有我可以插入我的代码或IDE中的任何应用程序,它们都可以使我做到这一点。我认为这有点超出了JUNIT的功能
最佳答案
我会推荐JavaPathfinder (JPF)进行此类练习。JPF
本质上是一个JVM,它以各种可能的方式模拟代码的执行-例如模拟字节码指令的所有可能的交织。 JPF用作model checker
,它探索应用程序可以输入的可能状态集并根据预定义规则-例如deadlock free
,non-null
等
当应用程序变得过于复杂时,模型检查器通常会失败,但是JPF能够在不遍历整个状态空间的情况下执行应用程序,并且通常能够很快地到达问题状态。尝试看看那个。