51 js-unit

1 JavaScript单元测试(jsUnit):http://www.jsunit.net/

2 JavaScript编码规范:通常在JavaScript不希望外界访问的成员和方法名以下划线开始。

3 jsUnit测试函数的要遵循的规则与JUnit 3.8类似(比如说测试函数名以test开头等)

示例:一个简单的测试

<script type="text/javascript"
	src="..\jsunit2_2\jsunit\app\jsUnitCore.js"></script>
<script type="text/javascript">
	function add(num1, num2)
	{
		return num1 + num2;
	}
	
	function testAdd()
	{
		result=add(1, 2);
		assertEquals(4,result);
	}
	
	
	
	
</script>

注意:

(1) 需要引入jsunit资源文件,“..”代表返回上一层目录

(2) 运行测试需要运行\jsunit2_2\jsunit\testRunner.html页面

(3) 测试页面在IE中打开较为方便

4 对于JsUnit来说,其setUp和tearDown方法与JUnit的运行原理是不同的,JUnit中的setUp和tearDown之间是没有关系的,也就是说不同的测试方法运行在不同的测试对象之中,而JsUnit的各个测试函数是运行在同一个测试页面中。因此setUp和tearDown会针对同一个变量进行操作。


function setUp()
  {
	//alert(count++);	

	document.getElementById("value1").value = 2;
	document.getElementById("value2").value = 3;
  }

  function tearDown()
  {
	//alert("tearDown");

	document.getElementById("value1").value = "";
	document.getElementById("value2").value = "";
	document.getElementById("value3").value = "";
  }

5 testsuit 示例

test1.js

function add(num1, num2)
  {
	return num1 + num2;
  }

  function subtract(num1, num2)
  {
	return num1 - num2;
  }

  function multiply(num1, num2)
  {
	return num1 * num2;
  }

  function addNumbers()
  {
	var v1 = document.getElementById("value1").value;
	var v2 = document.getElementById("value2").value;

	v1 = parseInt(v1);
	v2 = parseInt(v2);

	var v3 = v1 + v2;

	document.getElementById("value3").value = v3;
  }

test1.html

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

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

  <script type="text/javascript">

  var count = 0;

  // 此函数只执行一次(在页面加载后),类似于JUnit 4.x中的@BeforeClass
  // 注意:并没有与@AfterClass对应的函数存在
  function setUpPage()
  {
	alert('setUpPage Invoked');

    // 这行代码必须放在setUpPage函数的最后一行
	// 告诉JsUnit,setUpPage函数已经执行完毕
	
	setUpPageStatus = "complete"; 
  }

  




  function setUp()
  {
	//alert(count++);	

	document.getElementById("value1").value = 2;
	document.getElementById("value2").value = 3;
  }

  function tearDown()
  {
	//alert("tearDown");

	document.getElementById("value1").value = "";
	document.getElementById("value2").value = "";
	document.getElementById("value3").value = "";
  }

  // 以下为测试函数(Test Function)
  
  function testAdd()
  {
	var result = add(1, 2);

	assertEquals(3, result);
  }

  function testSubtract()
  {
	var result = subtract(1, 2);

	assertEquals(-1, result);
  }

  function testMultiply()
  {
	var result = multiply(1, 2);

	assertEquals(2,result);
  }

  function testAddNumbers()
  {
	addNumbers();

	assertEquals("5", document.getElementById("value3").value);
  }











  </script>

test2.html

<script type="text/javascript">


//测试套件名一定为suite
function suite()
{
	var testSuite = new top.jsUnitTestSuite();

    // 增加的测试页面的路径是相对于测试运行器(testRunner.html)的路径
	// 而不是当前页面
	testSuite.addTestPage("../../jsUnit_code/test1.html");
	testSuite.addTestPage("../../jsUnit_code/test1.html");
	testSuite.addTestPage("../../jsUnit_code/test1.html");

	return testSuite;
}




</script>













你可能感兴趣的:(51 js-unit)