Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 编解码算法的联合测试_Java_Unit Testing_Encoding - Fatal编程技术网

Java 编解码算法的联合测试

Java 编解码算法的联合测试,java,unit-testing,encoding,Java,Unit Testing,Encoding,我有一个编码和解码ASCII字符图像的函数。我的encode函数读取一个文件,然后创建一个字节数组来保存图像数据。我想知道什么单元测试是合适的 该算法的目的是对ASCII字符图像进行编码,以创建节省空间的传输格式。我创建了一个encode函数,在奇数元素上保存每个字符的计数,后跟实际字符。我的解码函数使用此数组重新打印原始图像。我被要求创建测试单元,但我从未使用过测试单元,我想知道在这种情况下测试单元会是什么样子。此外,还欢迎对改进我的算法提出建议 这里有一个关于单元测试的好参考。这本书很长,但

我有一个编码和解码ASCII字符图像的函数。我的encode函数读取一个文件,然后创建一个字节数组来保存图像数据。我想知道什么单元测试是合适的


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

这里有一个关于单元测试的好参考。这本书很长,但值得一读。

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

//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等编写测试用例的更多信息。祝你好运。

这里有一个关于单元测试的好参考。这本书很长,但值得一读。

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

//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等编写测试用例的更多信息。祝你好运。

针对这种情况的单元测试实际上非常简单。使用已知的硬编码输入,对其进行编码,检查它是否产生了它应该产生的输出。在编写算法时,您可能会发现一些边缘情况(如空图像或无效图像),并对此进行测试。对解码执行完全相同的操作,但方向相反。这种类型的期望值非常适合。典型的单元测试将预期值硬编码到测试源代码中。通过批准测试,您可以将期望值作为外部数据(当然是在修订控制下)保存,随着您的期望随代码的发展而变化。批准测试是否允许我检查代码是否输出原始图像?例如,如果我在encode()中输入一个.txt文件,然后对其进行解码(),我如何使用单元测试检查ASCII图像是否与原始图像相同?这种情况下的单元测试实际上非常简单。使用已知的硬编码输入,对其进行编码,检查它是否产生了它应该产生的输出。在编写算法时,您可能会发现一些边缘情况(如空图像或无效图像),并对此进行测试。对解码执行完全相同的操作,但方向相反。这种类型的期望值非常适合。典型的单元测试将预期值硬编码到测试源代码中。通过批准测试,您可以将期望值作为外部数据(当然是在修订控制下)保存,随着您的期望随代码的发展而变化。批准测试是否允许我检查代码是否输出原始图像?例如,如果我在encode()中输入一个.txt文件,然后对其进行解码(),我如何使用单元测试检查ASCII图像是否与原始图像相同?感谢您的响应。如果我在同一个类下有我的编码和解码方法,我的单元测试会在同一个类的主方法中编写吗?一个好的方法是为测试创建一个不同的类。您可以使用JUnit运行测试类。您将在测试控制台中看到响应。这里有一个关于感谢的介绍性链接。我发现JUnit很适合验证基本类型。对于我的解码方法,我想验证它打印的图像是否是原始图像。我如何做到这一点?正如您在问题中提到的“我的编码函数读取一个文件,然后创建一个字节数组来保存图像数据”。我相信你的编码函数会返回这个字节数组。因此,在您的测试用例中,您可以使用类似byte[]encoded=encodeMethod(image);,的内容创建这个字节数组;。您还提到,您的解码方法会重新打印原始图像,因此我假设如果您编写了一个可测试代码,它应该以图像的形式返回解码值。可以使用JUnitAPI assertEquals(picture,decodedValue)简单地编写测试用例;。它应该返回true。感谢您的回复。如果我在同一个类下有我的编码和解码方法,我的单元测试会在同一个类的主方法中编写吗?一个好的方法是为测试创建一个不同的类。您可以使用JUnit运行测试类。您将在测试控制台中看到响应。这里有一个关于感谢的介绍性链接。我发现JUnit很适合验证基本类型。我的解码方法