Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/290.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
C# 如何为压缩和解压缩的方法编写单元测试?_C#_Unit Testing_Testing_Compression_Testcase - Fatal编程技术网

C# 如何为压缩和解压缩的方法编写单元测试?

C# 如何为压缩和解压缩的方法编写单元测试?,c#,unit-testing,testing,compression,testcase,C#,Unit Testing,Testing,Compression,Testcase,我需要为压缩和解压缩ArraySegment对象的方法编写单元测试。这些方法中有很多奇怪的处理方法,我不需要理解。(他们也使用一些系统方法——我不知道它们的实现。) 问题在于如何实际测试这些东西。我可以检查具体输入的压缩方法的结果-Lorem ipsum dolor sit amet,concetetur adipising elit.-并基于此实验创建一个测试用例,但此解决方案不测试任何边界用例 我还可以测试对某个序列进行压缩然后解压缩是否会得到第一个输入序列,但这不是一个纯粹的单元测试 你遇

我需要为压缩和解压缩
ArraySegment
对象的方法编写单元测试。这些方法中有很多奇怪的处理方法,我不需要理解。(他们也使用一些系统方法——我不知道它们的实现。)

问题在于如何实际测试这些东西。我可以检查具体输入的压缩方法的结果-
Lorem ipsum dolor sit amet,concetetur adipising elit.
-并基于此实验创建一个测试用例,但此解决方案不测试任何边界用例

我还可以测试对某个序列进行压缩然后解压缩是否会得到第一个输入序列,但这不是一个纯粹的单元测试


你遇到过这样的问题吗?有什么好的解决方法吗?

我发现自己会定期编写这样的测试。为封装加密的代码编写测试的工作原理类似

您不能模拟或存根您不完全理解的代码(即无法准确预测其结果的代码),所以不要担心编写纯单元测试

  • 是的,测试压缩和解压缩是否返回输入
  • 测试压缩输入是否产生小于输入的输出
  • 如果压缩算法有任何细微差别对您的程序很重要,例如它将特定输入压缩到特定程度,您可以测试它。这里的主要价值在于记录您使用的库具有这些属性,并且您关心这些属性
  • 测试边缘情况,如零长度和超长输入
  • 我不会测试压缩一个特定的输入是否会产生一个特定的输出,因为如果您将压缩库升级到一个压缩性能更好的版本,则可能会出现这种情况。但是,如果需要持久化压缩数据并在以后解压缩,请测试压缩版本是否不变,以便不升级库并孤立持久化数据

    • 我发现自己定期编写这样的测试。为封装加密的代码编写测试的工作原理类似

      您不能模拟或存根您不完全理解的代码(即无法准确预测其结果的代码),所以不要担心编写纯单元测试

      • 是的,测试压缩和解压缩是否返回输入
      • 测试压缩输入是否产生小于输入的输出
      • 如果压缩算法有任何细微差别对您的程序很重要,例如它将特定输入压缩到特定程度,您可以测试它。这里的主要价值在于记录您使用的库具有这些属性,并且您关心这些属性
      • 测试边缘情况,如零长度和超长输入
      • 我不会测试压缩一个特定的输入是否会产生一个特定的输出,因为如果您将压缩库升级到一个压缩性能更好的版本,则可能会出现这种情况。但是,如果需要持久化压缩数据并在以后解压缩,请测试压缩版本是否不变,以便不升级库并孤立持久化数据

      我曾经有过同样的问题。在测试了所有异常可能性之后,我根据预期结果使用了MD5。你没什么可以做的了,因为我们希望压缩功能已经由作者进行了单元测试,所以我们基本上依赖于供应链的后续过程。我曾经遇到过同样的问题。在测试了所有异常可能性之后,我根据预期结果使用了MD5。你可以做的就不多了,因为我们希望压缩功能已经由作者进行了单元测试,所以我们基本上依赖于供应链的后续程序。