junit 4.4测试

阅读更多

项目中使用junit4.4,虽然一直在用,但对testcase 的执行细节却不大清楚,我做了一些例子来测试一下

JunitTest.java

public class JunitTest extends TestCase{
	
	private Logger logger = Logger.getLogger(JunitTest.class);
	public JunitTest(){
		super("junit test");
		logger.info("junit test contruct");
	}
	public void setUp(){
		logger.info("setUp");
	}
	public void testMethod1(){
		logger.info("method1");
	}
	public void testMethod2(){
		logger.info("method2");
	}
	@Test
	public void method3(){
		logger.info("annotion method3");
	}
	private void testMethod4(){
		logger.info("private method4");
	}
	@Test
	private void testMethod5(){
		// error Test method isn't public 
		logger.info("annotion private method5");
	}
	public void mthod6(){
		logger.info("method6");
	}
	private void mthod7(){
		logger.info("method6");
	}
	public void tearDown(){
		logger.info("tear down");
	}
	
}

 日志输出:

 

01-13 10:58:44,439 INFO  test.com.hiksoft.prototype.modules.advancedtemplate.junittest.JunitTest.(JunitTest.java:15) junit test contruct
01-13 10:58:44,439 INFO  test.com.hiksoft.prototype.modules.advancedtemplate.junittest.JunitTest.(JunitTest.java:15) junit test contruct
01-13 10:58:44,455 INFO  test.com.hiksoft.prototype.modules.advancedtemplate.junittest.JunitTest.setUp(JunitTest.java:18) setUp
01-13 10:58:44,455 INFO  test.com.hiksoft.prototype.modules.advancedtemplate.junittest.JunitTest.testMethod1(JunitTest.java:21) method1
01-13 10:58:44,455 INFO  test.com.hiksoft.prototype.modules.advancedtemplate.junittest.JunitTest.tearDown(JunitTest.java:45) tear down
01-13 10:58:44,455 INFO  test.com.hiksoft.prototype.modules.advancedtemplate.junittest.JunitTest.setUp(JunitTest.java:18) setUp
01-13 10:58:44,455 INFO  test.com.hiksoft.prototype.modules.advancedtemplate.junittest.JunitTest.testMethod2(JunitTest.java:24) method2
01-13 10:58:44,455 INFO  test.com.hiksoft.prototype.modules.advancedtemplate.junittest.JunitTest.tearDown(JunitTest.java:45) tear down

junit执行结果

   testMethod1   success;

   testMethod2   success;

   warning               这个什么错也没有,我又测试了一下 发现是 testMethod4 的问题

   warning           这个报错了, Test Method isn't public: testMethod5

 

    test 3 没有出现  ,难道junit4中方法必需要有 test前缀吗,

 

    从日志分析: 

        JunitTest  执行了 两次 构造函数,这个原因还不知道,需要看具体的执行代码。

        执行每个TestMethod 时 都会 执行一次setUp() 和 tearDown(); 应该是为method清理环境

        还有 测试方法应该有 test 前缀 ,而且为public

 

乌龙了,确实是junit4的包,不过确实junit3的用法。

 

下面是 junit 4的用法;

 

public class Junittest4 {
	private static Logger logger = Logger.getLogger(Junittest4.class);
	@Before
	public void before(){
		logger.info("before setUp");
	}
	@After
	public void after(){
		logger.info("After teardown");
	}
	public void testMethod1(){
		logger.info("no test annotion public method");
	}
	@Test
	public void Method2(){
		logger.info("test annotion public method");
	}
	@Ignore("not complete")
	@Test
	public void Method3(){
		logger.info("test annotion private method");
	}
	@Test(timeout=5)
	public void testMethod4() throws InterruptedException{
		Thread.sleep(4);
		logger.info("test annotion public has test method");
	}
	@Test(timeout=5)
	public void testMethod5() throws InterruptedException{
		Thread.sleep(5);
		logger.info("test annotion public has test method");
	}
	@Test(timeout=5)
	public void testMethod6() throws InterruptedException{
		Thread.sleep(6);
		logger.info("test annotion public has test method");
	}
}
 

 

   日志输出

 

01-13 11:45:50,502 INFO  test.com.hiksoft.prototype.modules.advancedtemplate.junittest.Junittest4.before(Junittest4.java:13) before setUp
01-13 11:45:50,517 INFO  test.com.hiksoft.prototype.modules.advancedtemplate.junittest.Junittest4.Method2(Junittest4.java:24) test annotion public method
01-13 11:45:50,517 INFO  test.com.hiksoft.prototype.modules.advancedtemplate.junittest.Junittest4.after(Junittest4.java:17) After teardown
01-13 11:45:50,564 INFO  test.com.hiksoft.prototype.modules.advancedtemplate.junittest.Junittest4.before(Junittest4.java:13) before setUp
01-13 11:45:50,580 INFO  test.com.hiksoft.prototype.modules.advancedtemplate.junittest.Junittest4.testMethod4(Junittest4.java:34) test annotion public has test method
01-13 11:45:50,580 INFO  test.com.hiksoft.prototype.modules.advancedtemplate.junittest.Junittest4.after(Junittest4.java:17) After teardown
01-13 11:45:50,580 INFO  test.com.hiksoft.prototype.modules.advancedtemplate.junittest.Junittest4.before(Junittest4.java:13) before setUp
01-13 11:45:50,595 INFO  test.com.hiksoft.prototype.modules.advancedtemplate.junittest.Junittest4.after(Junittest4.java:17) After teardown
01-13 11:45:50,595 INFO  test.com.hiksoft.prototype.modules.advancedtemplate.junittest.Junittest4.before(Junittest4.java:13) before setUp
01-13 11:45:50,611 INFO  test.com.hiksoft.prototype.modules.advancedtemplate.junittest.Junittest4.after(Junittest4.java:17) After teardown

    测试结果

    method2  suucess

    method3  ignore

    method4  success

    method5  fail

    method6  fail

 

你可能感兴趣的:(junit,prototype,Java,thread)