联合测试编码/解码算法

时间:2016-10-30 23:10:07

标签: java unit-testing encoding

我有一个对ASCII字符图像进行编码和解码的功能。我的编码函数读取一个文件,然后创建一个字节数组来保存图像数据。我想知道哪些单元测试合适?

该算法的目的是编码ASCII字符的图像,以便创建节省空间的传输格式。我创建了一个编码函数,在奇数元素上保存每个字符的计数,后跟实际字符。我的解码功能使用此数组重新打印原始图像。我被要求创建测试单元,但我从未使用过测试单元,并且想知道在这种情况下测试单元会是什么样子。此外,欢迎提出改进我的算法的建议。

1 个答案:

答案 0 :(得分:0)

这是关于单元测试的一个很好的参考。它很长但值得一读。 Unit Test in Java

回到你的问题,首先需要确保你的功能或类是否可测试。可测试函数是将其依赖作为函数参数传入的函数。例如:

//Testable code
public class Animal{ 
    public Dog createDog(Type breed, Food prefreedFood, int age)
    {
        if(breed && food && age > 0)
        {
             Dog myDog = new Dog(breed, prefreedFood, age);
             return myDog;
        }
        return null;
    }
}

不可测试的代码:

//Non testable code
public class Animal{ 

    public Dog createDog()
    {
        if(obj.breed && obj.food && obj.age > 0)
        {
             Dog myDog = new Dog(obj.breed, obj.prefreedFood, obj.age);
             return myDog;
        }
        return null;
    }
}

在这个例子中,我用两种方式编写了一个createDog函数,一个是可测试的,另一个不是。如果您尝试测试可测试功能,可以按照以下方式轻松完成。

//Test case
Type breed = new Type("BullDog");
Food food = new Food("Best Dog food");
int age = 5;
Dog myBullDog = new Dog(brred, food, age);
assertEquals(myBullDog, createDog(breed,food,age)); //should return true

在查看具有对象依赖性的第二类和函数时,很可能在测试时没有初始化用于检索信息的对象。因此无法编写测试用例。 以下两个代码片段分别是可测试和不可测试的。第三个代码段是测试用例。您可以在提供的链接上找到有关使用assertFalse,assertTrue等编写测试用例的更多信息。祝你好运。