小试JsUnit

首先是所要测试的js代码

function add(num11, num22){
	return num11 + num22;
}
function sbutract(num11, num22){
	return num11 - num22;
}
function multiply(num11, num22){
	return num11 * num22;
}

function addNumbers(){
	var v1 = document.getElementById('value11').value;
	var v2 = document.getElementById('value22').value;
	v1 = parseInt(v1);
	v2 = parseInt(v2);
	v3 = v1 + v2;
	var v3 = v1 + v2;
	document.getElementById('value33').value = v3;
}

然后是使用JsUnit编写单元测试的jsUnit_testJS.html

<script type="text/javascript" src="../app/jsUnitCore.js"></script>
<script type="text/javascript" src="mycode.js"></script>

<script type="text/javascript">
	//JavaScript编码规范:将JavaScript中不希望外界访问的成员和方法名以下划线开始
	var count = 0;
	
	//JUnit会打印000,jsUnit中会打印012
	//对于jsUnit来说,其setUp和tearDown方法与JUnit的运行原理是不同的
	//JUnit中的setUp和tearDown之间是没有关系的,即不同的测试方法运行在不同的测试对象中
	//jsUnit的各个测试函数是运行在同一个测试页面中的,因此setUp和tearDown会针对同一个变量进行操作
	function setUp(){
		alert(count++);
		alert('setUp invoked');
		//为页面赋初值:目的是为测试addNumbers()函数做准备
		document.getElementById('value11').value = 6;
		document.getElementById('value22').value = 9;
	}
	function tearDown(){
		alert('tearDown invoked');
		//清理页面痕迹
		document.getElementById('value11').value = '';
		document.getElementById('value22').value = '';
		document.getElementById('value33').value = '';
	}
	
	//此函数只执行一次,执行时机是在页面加载后。类似于JUnit4.x中的@BeforeClass
	//但jsUnit中并不存在与@AfterClass对应的函数
	function setUpPage(){
		alert('setUpPage invoked');
		//该代码必须放在setUpPage()函数最后一行,用来通知jsUnit:该函数已执行完毕
		setUpPageStatus = 'complete';
	}

	//以下为测试函数(Test Function)
	//jsUnit测试函数所要遵循的规则,与JUnit3.8类似
	//比如测试函数名以test开头等
	function testAdd(){
		var result = add(1, 2);
		assertEquals(3, result);
	}
	function testSbutract(){
		var result = sbutract(1, 2);
		assertEquals(-1, result);
	}
	function testMultiply(){
		var result = multiply(1, 2);
		assertEquals(2, result);
	}
	
	//jsUnit使用步骤
	//		1)将jsUnitCore.js引入到测试页面中
	//		2)在测试页面中编写js的测试用例
	//		3)打开jsUnit的测试运行器(%JSUNIT_HOME%/testRunner.html)
	//		4)在file:///位置输入测试页面的路径
	//        我在测试时写的是这个路径:F:\Note\jsunit\tests\jsUnit_testSuite.html
	//        因为我在测试时,发现无论如何测试不了,最后把页面拷贝到JsUnit解压后的tests目录下,再测试,通过
	//		5)点击Run开始测试
	function testAddNumbers(){
		addNumbers();
		assertEquals('15', document.getElementById('value33').value);
	}
</script>

<input type="text" id="value11"><br/>
<input type="text" id="value22"><br/>
<input type="text" id="value33"><br/>
<input type="button" value="Add" onclick="addNumbers();">

最后是使用了JsUnit中的测试套件的jsUnit_testSuite.html

<script type="text/javascript" src="../app/jsUnitCore.js"></script>

<script type="text/javascript">
	//自定义的测试套件
	function mySuite(){
		var testSuite = new top.jsUnitTestSuite();
		//这个相对路径是相对于测试运行器所在的页面,而非当前页面
		testSuite.addTestPage('tests/jsUnit_testJS.html');
		testSuite.addTestPage('tests/jsUnit_testJS.html');
		return testSuite;
	}
	
	//jsUnit的测试套件名必须为suite()
	function suite(){
		var testSuite = new top.jsUnitTestSuite();
		testSuite.addTestPage('tests/jsUnit_testJS.html');
		testSuite.addTestSuite(mySuite()); //加入我们自定义的测试套件
		return testSuite;
	}
</script>

你可能感兴趣的:(JavaScript,function,测试,单元测试,JUnit,button)