单元测试-java

  公司架构师第一次叫我写单元测试的时候,其实我是拒绝的,让我写我就写,岂不是太没面子了,(玩笑脸)。然后就是丢人丢到家的事故了。

  第一次 我用junit 4.0 在方法下直接输出上面定义好的变量,然后变量都是用for循环定义好的, 我现在想想我要是他,应该会直接动手吧。现在聊聊我理解的单元测试,

首先 基类是:

public class AddressBookConfiguration {
private List<AddressBook> addressBookList;
private Map<String, String> addressBookMap = new HashMap<String, String>();


public AddressBookConfiguration() {
this.addressBookList = new ArrayList<AddressBook>();
}


public List<AddressBook> getAddressBookList() {
return addressBookList;
}


public void setAddressBookList(List<AddressBook> addressBookList) {
if (addressBookList == null) {
return;
}
this.addressBookList = addressBookList;
addressBookMap.clear();
for (AddressBook addressBook : addressBookList) {
if (addressBook != null) {
if (StringUtil.isNotNullOrEmpty(addressBook.getIp())) {
addressBookMap.put(addressBook.getIp(), addressBook.getName());
}
if (StringUtil.isNotNullOrEmpty(addressBook.getIpv6())) {
String teString = IPv6Utils.canonize(addressBook.getIpv6());
addressBookMap.put(teString, addressBook.getName());
}
if (StringUtil.isNotNullOrEmpty(addressBook.getMac())) {
addressBookMap.put(addressBook.getMac().toUpperCase(), addressBook.getName());
}
}
}
}


public String getAddressName(String address) {
String name = null;
if (address == null) {
return null;
}
if (IPAddressValidator.isValidIPv4Address(address)) {
name = address;
} else if (IPAddressValidator.isValidIPv6Address(address)) {
name = IPv6Utils.canonize(address);
} else if (IPAddressValidator.isValidMACAddress(address)) {
name = address.toUpperCase();
} else {
return address;
}
if (addressBookMap.containsKey(name)) {
return addressBookMap.get(name);
} else {
return address;


}
}
}太多了吧,有用的就是setAddressName&getAddressName,这两个,具体逻辑自己体会吧。在粘测试类的时候,先说说测试该怎么写。1.首先绝对避免system.out.pringln();

2.不要自定义变量,变量要直观的体现在测试处。除非出现我这种情况,测试之前要先传递给基类(也就是上面的那个类)数据,这个才自己定要参数。

单元测试类:

package com.polyvirtual.ui.configuration.data;


import java.util.ArrayList;
import java.util.List;
import static org.junit.Assert.*;
import org.junit.BeforeClass;
import org.junit.Test;
import org.omg.CORBA.PUBLIC_MEMBER;


public class AddressBookConfigurationTest {


static AddressBookConfiguration addressBookConfiguration = new AddressBookConfiguration();


@BeforeClass
public static void createDataAndInjection() {
List<AddressBook> addressBookList = new ArrayList<AddressBook>();
AddressBook ab1 = new AddressBook();
ab1.setIp("192.168.10.1");
ab1.setIpv6("A::5200:6");
ab1.setMac("null");
ab1.setName("ab1");
addressBookList.add(ab1);


AddressBook ab2 = new AddressBook();
ab2.setIp("127.0.0.1");
ab2.setIpv6("::0");
ab2.setMac("00:01:6c:06:a6:01");
ab2.setName("ab2");
addressBookList.add(ab2);


AddressBook ab3 = new AddressBook();
ab3.setIp("255.255.255");
ab3.setIpv6("0::127.0.0.1");
ab3.setMac("EA:CE:7C:8Q:00:CC:");
ab3.setName("ab3");
addressBookList.add(ab3);


AddressBook abipv6 = new AddressBook();
abipv6.setIp("255.255.255");
abipv6.setIpv6("1::127.0.0.1");
abipv6.setMac("EA:CE:7C:8Q:00:CC:");
abipv6.setName("abipv6");
addressBookList.add(abipv6);


AddressBook ab4empty = new AddressBook();
ab4empty.setIp("");
ab4empty.setIpv6("");
ab4empty.setMac("");
ab4empty.setName("ab4empty");
addressBookList.add(ab4empty);


AddressBook ab5null = new AddressBook();
ab4empty.setIp(null);
ab4empty.setIpv6(null);
ab4empty.setMac(null);
ab4empty.setName("ab5null");
addressBookList.add(ab5null);
addressBookConfiguration.setAddressBookList(addressBookList);
}


@Test
public void testGetAddressName4Ipv4() {
assertEquals("ab1", addressBookConfiguration.getAddressName("192.168.10.1"));
assertNotEquals("ab2", addressBookConfiguration.getAddressName("127.0.0.4"));
assertNotEquals("ab2", addressBookConfiguration.getAddressName("localhost"));
assertNotEquals("ab2", addressBookConfiguration.getAddressName("localhost:8080"));
}


@Test
public void testGetAddressName4MAC() {
assertEquals("ab2", addressBookConfiguration.getAddressName("00:01:6C:06:A6:01"));
assertEquals("ab2", addressBookConfiguration.getAddressName("00:01:6C:06:a6:01"));
assertEquals("ab2", addressBookConfiguration.getAddressName("00:01:6c:06:a6:01"));
assertNotEquals("ab1", addressBookConfiguration.getAddressName("0a:01:6c:06:a6:01"));
assertNotEquals("ab1", addressBookConfiguration.getAddressName("01:6c:06:a6:01"));
}


@Test
public void testGetAddressName4Ipv6() {


assertEquals("ab1", addressBookConfiguration.getAddressName("A::5200:6"));
assertEquals("ab1", addressBookConfiguration.getAddressName("a::5200:6"));
assertEquals("ab1", addressBookConfiguration.getAddressName("a:0000:0000:0000:0000:0000:5200:6"));
assertEquals("ab1", addressBookConfiguration.getAddressName("A:0000:0000:0000:0000:0000:5200:6"));
assertEquals("ab1", addressBookConfiguration.getAddressName("A:0:0000:0000:0000:0000:5200:6"));
assertEquals("ab1", addressBookConfiguration.getAddressName("A:0000:0:0000:0000:0000:5200:6"));
assertEquals("ab1", addressBookConfiguration.getAddressName("A:0000:0000:0:0000:0000:5200:6"));
assertEquals("ab1", addressBookConfiguration.getAddressName("A:0000:0000:0000:0:0000:5200:6"));
assertEquals("ab1", addressBookConfiguration.getAddressName("A:0000:0000:0000:0000:0:5200:6"));


assertEquals("ab3", addressBookConfiguration.getAddressName("::127.0.0.1"));
assertEquals("ab3", addressBookConfiguration.getAddressName("0::127.0.0.1"));
assertEquals("ab3", addressBookConfiguration.getAddressName("0000:0000:0000:0000:0000:0000:127.0.0.1"));
assertEquals("ab3", addressBookConfiguration.getAddressName("0000:0:0000:0000:0000:0000:127.0.0.1"));
assertEquals("ab3", addressBookConfiguration.getAddressName("0000:0000:0:0000:0000:0000:127.0.0.1"));
assertEquals("ab3", addressBookConfiguration.getAddressName("0000:0000:0000:0:0000:0000:127.0.0.1"));
assertEquals("ab3", addressBookConfiguration.getAddressName("0000:0000:0000:0000:0:0000:127.0.0.1"));
assertEquals("ab3", addressBookConfiguration.getAddressName("0000:0000:0000:0000:0000:0:127.0.0.1"));
assertNotEquals("ab3", addressBookConfiguration.getAddressName("0000:0000:0000:0000:0000:0:127.0.0.1.1"));
assertNotEquals("ab3", addressBookConfiguration.getAddressName("0000:0000:0000:0000:0000:0:127.0"));
assertEquals("abipv6", addressBookConfiguration.getAddressName("1::127.0.0.1"));
assertEquals("abipv6", addressBookConfiguration.getAddressName("1:0:127.0.0.1"));
assertEquals("abipv6", addressBookConfiguration.getAddressName("1:00::127.0.0.1"));
assertEquals("abipv6", addressBookConfiguration.getAddressName("1:000::127.0.0.1"));
assertEquals("abipv6", addressBookConfiguration.getAddressName("1:0000::127.0.0.1"));
assertEquals("abipv6", addressBookConfiguration.getAddressName("01:0000::127.0.0.1"));
assertEquals("abipv6", addressBookConfiguration.getAddressName("001:0000::127.0.0.1"));
assertEquals("abipv6", addressBookConfiguration.getAddressName("0001:0000::127.0.0.1"));
assertNotEquals("abipv6", addressBookConfiguration.getAddressName("00001:0000::127.0.0.1"));
assertEquals("abipv6", addressBookConfiguration.getAddressName("0001:0000:0::127.0.0.1"));
assertEquals("abipv6", addressBookConfiguration.getAddressName("0001:0000:00::127.0.0.1"));
assertEquals("abipv6", addressBookConfiguration.getAddressName("0001:0000:000::127.0.0.1"));
assertEquals("abipv6", addressBookConfiguration.getAddressName("0001:0000:0000::127.0.0.1"));
assertEquals("abipv6", addressBookConfiguration.getAddressName("0001:0:0:00::127.0.0.1"));
assertEquals("abipv6", addressBookConfiguration.getAddressName("0001:0:0:000::127.0.0.1"));
assertEquals("abipv6", addressBookConfiguration.getAddressName("0001:0:0:0000::127.0.0.1"));
assertNotEquals("abipv6", addressBookConfiguration.getAddressName("0001:0:0:00000::127.0.0.1"));
assertEquals("abipv6", addressBookConfiguration.getAddressName("0001:0:0:0::0:127.0.0.1"));


}


@Test
public void testNullAndEmpty() {
assertEquals(addressBookConfiguration.getAddressName(""), "");
assertEquals(addressBookConfiguration.getAddressName(null), null);
assertNotEquals(addressBookConfiguration.getAddressName(""), null);
assertNotEquals(addressBookConfiguration.getAddressName(""), null);
}


}

太长了是吧,长是没问题的,但是这个类我还没写完,还有些凌乱呢,

就着这个类来说,测试都应该是assertTrue,assertNotTrue,这种,成功与否,看JUnit的提示,而且在这个类中,除了要导入数据我创建的对象(或者没办法要创建的变量)除外,不要自己定义对象和变量,这绝对不是明智的选择,倒是找挨批的方法  。以目前我的理解来说,单元测试的第一个作用就是测试现有的方法是否达到预设的功能,第二就是,在以后代码修改后,能很快的测试修改后的代码是否丢失了之前的功能,或出现之前没有出现的漏洞。嗯 就这样,在这里悄悄地感谢一下我的架构师shawn,谢谢能有这么大的耐心指导我。估计我自己都不一定能够做到这样,在这里悄悄地谢谢你。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值