前言
这段学习了很多文档,其中就包括单元测试。所以,这里写一篇博客来记录和巩固学到的知识。
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
运行(blog_unittest.py 是文件, 运行命令不需要.py后缀):
python -m unittest blog_unittest
运行原理是,会自动运行所有test_xxx 开始的方法。另外的两个方法,会在每个test_xxx运行前和运行后分别执行,
setUpClass 和 tearDownClass只会在运行前和运行后执行一次,可以用于数据库连接和关闭。
如:
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...")
def setUpClass():
print("初始化数据库连接")
def tearDownClass():
print("关闭数据库连接")
一共5组:
参考:
Java:https://www.youtube.com/watch?v=I8XXfgF9GSc
Python:https://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000/00140137128705556022982cfd844b38d050add8565dcb9000