前言
這段學習了很多文檔,其中就包括單元測試。所以,這裏寫一篇博客來記錄和鞏固學到的知識。
1. Java的JUnit 4
使用Eclipse創建一個Java Project:
JUnitTesting.java
package testing;
public class JUnitTesting {
public int squre(int n) {
return n*n;
}
public int countA(String words) {
int count = 0;
String wordsToLower = words.toLowerCase();
for(int i=0; i < words.length(); i++) {
if (wordsToLower.charAt(i) == 'a') {
count++;
}
}
return count;
}
}
-
創建第一個單元測試:
選擇如下(最新的是JUnit 5,不過因爲後面創建運行所有測試的類會失敗,所以選擇JUnit4):
實例代碼:
5的平方=25,但是這裏給的參數是23,所以結果應該是失敗。
郵件Run as:
修改爲25:
-
創建第二個單元測試:
-
創建一個運行所有的單元測試的類(我不知道怎麼稱呼。。。):
運行:
你會發現運行了兩個單元測試:
2. Python的unittest
爲了簡化操作,這裏就不編寫用於測試的源代碼,直接測試Python的字典。
import unittest
class TestDict(unittest.TestCase):
def test_init(self):
# 賦值後,字典中是否有對應的鍵和值
d = dict(a=1, b='test')
self.assertEqual(d['a'], 1)
self.assertEqual(d['b'], 'test')
self.assertTrue(isinstance(d, dict))
def test_key(self):
# 賦值後,字典中是否有對應的鍵和值
d = dict()
d['key'] = 'value'
self.assertEqual(d['key'], 'value')
def test_attr(self):
# 賦值後,字典中是否有對應的鍵和值
d = dict()
d['key'] = 'value'
self. assertEqual('key' in d, True)
self. assertEqual(d['key'], 'value')
def test_keyerror(self):
# 是否存在指定的key
d = dict()
with self.assertRaises(KeyError):
value = d['empty']
def test_attrerror(self):
# 測試是否存在屬性、方法
d = dict()
with self.assertRaises(AttributeError):
value = d.empty
運行:
python -m unittest blog_unittest
運行原理是,會自動運行所有test_xxx 開始的方法。另外的兩個方法,會在每個test_xxx運行前和運行後分別執行(可以用於數據庫連接和關閉),如:
import unittest
class TestDict(unittest.TestCase):
def test_init(self):
# 賦值後,字典中是否有對應的鍵和值
d = dict(a=1, b='test')
self.assertEqual(d['a'], 1)
self.assertEqual(d['b'], 'test')
self.assertTrue(isinstance(d, dict))
def test_key(self):
# 賦值後,字典中是否有對應的鍵和值
d = dict()
d['key'] = 'value'
self.assertEqual(d['key'], 'value')
def test_attr(self):
# 賦值後,字典中是否有對應的鍵和值
d = dict()
d['key'] = 'value'
self. assertEqual('key' in d, True)
self. assertEqual(d['key'], 'value')
def test_keyerror(self):
# 是否存在指定的key
d = dict()
with self.assertRaises(KeyError):
value = d['empty']
def test_attrerror(self):
# 測試是否存在屬性、方法
d = dict()
with self.assertRaises(AttributeError):
value = d.empty
def setUp(self):
print("setUp...")
def tearDown(self):
print("tearDown...")
一共5組: