junit 3单元测试 thread.sleep时 出现bug!

如果‘先生 发布于 2012/12/28 16:59
阅读 866
收藏 0
下面是我的代码:
package com.mxl;

public class SaleTicketThread implements Runnable {
	private int tickit=50;

	@Override
	public void run() {
		// TODO Auto-generated method stub
		for(int i=0;i<200;i++) {
		synchronized (this) {
				if (tickit > 0) {
					System.out.println(Thread.currentThread().getName()
							+ "卖了第:" + tickit-- + "张票");

					try {
						Thread.sleep(100);
					} catch (InterruptedException e) {
						// TODO Auto-generated catch block
						e.printStackTrace();
					}

				} else {
					System.out.println(Thread.currentThread().getName()
							+ "余票不足!");
					break;
				}
			}

		}

	}
public static void main(String args[]){
	   SaleTicketThread salT3=new SaleTicketThread(ti,30);
		   
		   Thread th1=new Thread(salT1,"A");
		   th1.start();
		   Thread th2=new Thread(salT1,"B");
		   th2.start();
		   Thread th3=new Thread(salT1,"C");
		   th3.start();
		   
		   
	}

}
junit 3单元测试代码:

package com.mxl.threadTest;

import com.mxl.SaleTicketThread;
import com.mxl.Tickit;

import junit.framework.TestCase;

public class TestTickitThread extends TestCase{
   public void testSaleTickit(){
    SaleTicketThread salT1=new SaleTicketThread();
    Thread th1=new Thread(salT1,"A");
    th1.start();
    Thread th2=new Thread(salT1,"B");
    th2.start();
    Thread th3=new Thread(salT1,"C");
    th3.start();
   }
}

1、junit 测试结果 分正常:

2、main 方法测试结果正常运行:

 

3、如果把类中的Thread.Sleep注释掉则JUNIT测试会显示 与 main 方法相同的结果。

4、问题:这个是junit 的bug?还是我对junit的使用不当?

 
加载中
0
如果‘先生
如果‘先生
怎么没有人帮我解决呢?。。。。。。。。。。。。。。。。。
0
绝对零度
绝对零度
你自己方上来的代码就有问题。main方法中SaleTicketThread salT3=new SaleTicketThread(ti,30);能编译通过吗,SaleTicketThread哪里定义了这个构造函数,ti是什么东西?
返回顶部
顶部