junit多线程测试
现在在做junit多线程测试的项目,里面是用junit3进行开发的,先开始的junit测试是串行模式(按顺 序执行),之后要更改为多线程测试,其中包含的有启动多个数据库和从数据库获得的数据保存到一个公共类中的一个Map容器中,当改为多线程时,Map容器 中的数据总会被最新的线程覆盖掉,而且线程在执行junit test方法的时候出现了一些错误,在test方法所引用的方法能同步的都同步了(除了一些引用了jar包里面的方法没有同步外),运行的时候还是会出现 test方法里面获取的数据是已经覆盖的值;有多个thread进入到一个test方法中(thread的无规律性).
哪位大虾能帮帮我,小弟先在这里谢谢了......
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(9)
那我就举个例子吧。(主要是让类中的每个test方法独立起来,相当于事务中的原子性)
比如有两个类其中包含了很多test方法和其他一些为test方法服务的方法,然后junit会将这两个类收集起来放在TestSuite中。现在的问题是用多线程跑junit中的所有的test方法的时候会有多个线程跑到一个test方法中,如果将两个类中的所有的test方法独立起来,那样的话不论是哪个线程跑哪个test方法都是没有问题的。关键是现在不知道如何将test方法独立起来。因为test方法中引用的方法里面会有调用别的类里面的方法和封装在jar包里面的方法。
引用来自#9楼“yanwang”的帖子
/********************************************************************************************************************************
* Methode de test du scenario nominal de la reaffectation c'est à dire :
* - reception d'une demande de mission en entree
*/
public void testScenarioNominalReaffectation() {
receptionDemandeMissionEntree();
receptionAcquittementDemandeMissionEntree();
receptionCompteRenduPriseEntree();
receptionDemandeReaffectationMissionEntree();
receptionAcquittementReaffectationMissionEntree();
receptionCompteRenduDeposeEntree();
}
这个test方法是junit中多个suite里面的一个类中的test方法,这个test方法里面引用的方法是在这个类里面的,不过test引用的方法里面还调用的有其他已封装好的jar包里面的方法,现在是通过同步每个test方法来运行多线程的。
如果按您说的那样好像是不能同步了???
/********************************************************************************************************************************
* Methode de test du scenario nominal de la reaffectation c'est à dire :
* - reception d'une demande de mission en entree
*/
public void testScenarioNominalReaffectation() {
receptionDemandeMissionEntree();
receptionAcquittementDemandeMissionEntree();
receptionCompteRenduPriseEntree();
receptionDemandeReaffectationMissionEntree();
receptionAcquittementReaffectationMissionEntree();
receptionCompteRenduDeposeEntree();
}
这个test方法是junit中多个suite里面的一个类中的test方法,这个test方法里面引用的方法是在这个类里面的,不过test引用的方法里面还调用的有其他已封装好的jar包里面的方法,现在是通过同步每个test方法来运行多线程的。
如果按您说的那样好像是不能同步了???
引用来自#7楼“yanwang”的帖子
能说的更具体点吗,"不要多个实例"我不是很明白!
能说的更具体点吗,"不要多个实例"我不是很明白!
哦这样啊,不要多个实例就可以啦。
引用来自#3楼“yanwang”的帖子
我是在运行多个junit test方法的时候不能同步,而且在junit test方法里面还引用的有被封装在jar包里的方法,那如何将多个test方法同步呢????
我是在运行多个junit test方法的时候不能同步,而且在junit test方法里面还引用的有被封装在jar包里的方法,那如何将多个test方法同步呢????
2个问题
1覆盖的原因是key重复吧,
2多线程情况下不要使用hashmap 而使用 java.util.concurrent.ConcurrentHashMap 。