| 
 步骤 2 : main 的问题 步骤 3 : junit 步骤 4 : 运行方式 步骤 5 : 运行成功 步骤 6 : 新增加一个测试方法 步骤 7 : 运行失败 步骤 8 : junit的好处 步骤 9 : before & after 步骤 10 : 可运行项目 步骤 11 : Assert 
					大家刚开始写代码的时候,都会用 main 函数来进行运行。顺便测试一下所写的代码,是否按照期望运行。 比如如下代码,用来测试sum方法是否按照预期进行执行。 package junit;
public class SumUtil {
	public static void main(String[] args) {
		int result = sum1(1,2);
		System.out.println(result);
	}
	public static int sum1(int i, int j) {
		return i+j;
	}
	
}
 package junit;
public class SumUtil {
	public static void main(String[] args) {
		int result = sum1(1,2);
		System.out.println(result);
	}
	public static int sum1(int i, int j) {
		return i+j;
	}
	
}
					通过main方法来进行测试的问题是显而易见的。  比如新开发了一个方法,是对3个数求和,那么问题至少有两个: 1. 要在原来测试的基础上修改,可能破坏原来的测试逻辑 2. 测试成功了,还是i测试失败了,都不知道呀。。。只能通过肉眼进行观察,如果测试的量很大,是很难看的过来滴 package junit;
public class SumUtil {
	public static void main(String[] args) {
		int result = sum1(1,2);
		System.out.println(result);
		int result2 = sum2(1,2,3);
		System.out.println(result2);
	}
	public static int sum1(int i, int j) {
		return i+j;
	}
	
	public static int sum2(int i, int j, int k) {
		return i+j+k;
	}
	
}
 package junit;
public class SumUtil {
	public static void main(String[] args) {
		int result = sum1(1,2);
		System.out.println(result);
		int result2 = sum2(1,2,3);
		System.out.println(result2);
	}
	public static int sum1(int i, int j) {
		return i+j;
	}
	
	public static int sum2(int i, int j, int k) {
		return i+j+k;
	}
	
}
					为了应付这种测试的需求,我们就需要使用 junit 测试框架来进行测试工作。 首先下载 jar 包: 放在右上角的 junit-4.9.jar, 导入到项目中。 然后创建 TestCase1类,并创建一个方法: @Test public void testSum1() { int result = SumUtil.sum1(1, 2); Assert.assertEquals(result, 3); } 它是由 @Test 进行了注解,表示这个方法是一个测试方法 Assert.assertEquals(result, 3); 表示对 result 数值的期待是 3,如果是其他数值,就无法通过测试。 package junit;
import org.junit.Test;
import junit.framework.Assert;
public class TestCase1 {
    @Test
    public void testSum1() {
    	int result = SumUtil.sum1(1, 2);
    	Assert.assertEquals(result, 3);
    }
}
 package junit;
import org.junit.Test;
import junit.framework.Assert;
public class TestCase1 {
    @Test
    public void testSum1() {
    	int result = SumUtil.sum1(1, 2);
    	Assert.assertEquals(result, 3);
    }
}
					与main方法运行不一样,运行测试用例的时候,需要选择 Run As -> JUnit Test 方式
					 
					运行成功之后,会显示如图所示的样子,是绿色的
					 
					接着,我们新增加一个  testSum2 方法, 用于测试sum2 方法。 这一次,我们故意写成 Assert.assertEquals(result, 5); 看看如果测试不能通过是什么样子的。 package junit;
import org.junit.Test;
import junit.framework.Assert;
public class TestCase1 {
    @Test
    public void testSum1() {
    	int result = SumUtil.sum1(1, 2);
    	Assert.assertEquals(result, 3);
    }
    @Test
    public void testSum2() {
    	int result = SumUtil.sum2(1, 2,3);
    	Assert.assertEquals(result, 5);
    }
}
 package junit;
import org.junit.Test;
import junit.framework.Assert;
public class TestCase1 {
    @Test
    public void testSum1() {
    	int result = SumUtil.sum1(1, 2);
    	Assert.assertEquals(result, 3);
    }
    @Test
    public void testSum2() {
    	int result = SumUtil.sum2(1, 2,3);
    	Assert.assertEquals(result, 5);
    }
}
					运行之后,因为 result 的值是 6, 并不等于5, 所以失败之后,看到如图所示的效果,表示没有通过测试。 而且还给出了失败的行数: TesetCase1.java:18 
					@Before @After 也是常见的测试框架注解,分别用来在测试开始之前做的事情,和结束之后做的事情。
					 package junit;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import junit.framework.Assert;
public class TestCase1 {
	@Before
	public void before() {
		System.out.println("测试前的准备工作,比如链接数据库等等");
	}
	@After
	public void after() {
		System.out.println("测试结束后的工作,比如关闭链接等等");
	}
	
    @Test
    public void testSum1() {
    	int result = SumUtil.sum1(1, 2);
    	Assert.assertEquals(result, 3);
    }
    @Test
    public void testSum2() {
    	int result = SumUtil.sum2(1, 2,3);
    	Assert.assertEquals(result, 5);
    }
}
 
					在右上角有本知识点对应的可运行项目下载 ,实在自己搞不出来,就下载解压出来比较一下。
					 
					关于 Assert的用法,除了举例里的判断数字是否相等,还可以判断boolean, 是否是null ,是否是相同对象等等常见逻辑。 用法都在截图里了,很简单,有兴趣就自己挨个试试好了 
				HOW2J公众号,关注后实时获知最新的教程和优惠活动,谢谢。
			   
		
		
		 	问答区域     
		 	
				
		  
	 
	  		
	  
	  	2021-08-10
	  		
	  				
	  					 
	  
					
						提示:如果使用IDEA,并且项目为Maven工程的话,测试的代码需要放在创建maven时自动生成的test包下 
					
					
						
							
						
											
							
					
					
					
	   
 
		回答已经提交成功,正在审核。 请于 我的回答 处查看回答记录,谢谢	
	 
	  		
	  
	  	2020-10-27
	  		
	  				
	  					 
	  
					
						eclipse 右键没有Run as junit 
					
					
						
							
						
											
							
					
					
					
	   
 
3 个答案 
	 M_GX 跳转到问题位置 答案时间:2022-06-30 方法之前加个@Test就能看到了,这个是注解,只有加了这个才能进行测试 Javeson 跳转到问题位置 答案时间:2022-05-25 菜单 Run -> Run as -> Run as JUnit BianJiang 跳转到问题位置 答案时间:2020-11-01 我是右键单击带有@Test的函数,才会有那个junit的选项 
		回答已经提交成功,正在审核。 请于 我的回答 处查看回答记录,谢谢	
	 
	  		
	  
	  	2020-03-09
	  		
	  				
	  					 
	  
					
						idea找不到runas选项 
					
					
						
							
						
											
							
					
					
					
	   
	  		
	  
	  	2020-02-28
	  		
	  				
	  					 
	  
					
						工作中的单元测试 
					
					
						
							
						
											
							
					
					
					
	   
	  		
	  
	  	2020-01-04
	  		
	  				
	  					 
	  
					
						关于 @before,@after 和 @beforeclass ,@afterclas 
					
					
						
							
						
											
							
					
					
					
	   提问太多,页面渲染太慢,为了加快渲染速度,本页最多只显示几条提问。还有 5 条以前的提问,请 点击查看 
			
			提问之前请登陆
			
		 
		提问已经提交成功,正在审核。 请于 我的提问 处查看提问记录,谢谢	
	 | |||||||||||||||