小编Ada*_*gen的帖子

单元测试用于比较NUnit中的文本文件

我有一个类处理2 xml文件并生成一个文本文件.

我想写一堆单元/集成测试,可以单独传递或失败,以便执行以下操作:

  1. 对于输入A和B,生成输出.
  2. 将生成的文件的内容与内容预期输出进行比较
  3. 当实际内容与预期内容不同时,将失败并显示有关差异的一些有用信息.

下面是该课程的原型以及我在单元测试中的第一次尝试.

是否有我应该用于此类测试的模式,还是人们倾向于编写数以万亿的TestX()函数?

有没有更好的方法来哄骗NUnit的文本文件差异?我应该嵌入文本文件diff算法吗?


class ReportGenerator
{
    string Generate(string inputPathA, string inputPathB)
    {
        //do stuff
    }
}
Run Code Online (Sandbox Code Playgroud)
[TextFixture]
public class ReportGeneratorTests
{
     static Diff(string pathToExpectedResult, string pathToActualResult)
     {
         using (StreamReader rs1 = File.OpenText(pathToExpectedResult))
         {
             using (StreamReader rs2 = File.OpenText(pathToActualResult))
             {
                 string actualContents = rs2.ReadToEnd();
                 string expectedContents = rs1.ReadToEnd();                  

                 //this works, but the output could be a LOT more useful.
                 Assert.AreEqual(expectedContents, actualContents);
             }
         }
     }

     static TestGenerate(string pathToInputA, string pathToInputB, string pathToExpectedResult)
     { …
Run Code Online (Sandbox Code Playgroud)

diff nunit unit-testing text-files

5
推荐指数
1
解决办法
3664
查看次数

存储过程与条件结果

我想编写一个类似这样的存储过程:

SELECT * from T where T.A = @a and T.B = @b
Run Code Online (Sandbox Code Playgroud)

如果返回行,则返回这些行,否则返回

SELECT * from T where T.A = @a and T.B IS NULL
Run Code Online (Sandbox Code Playgroud)

编辑:

感觉应该有一种方法来创建一个过程,使其运行第一个查询一次,仅在必要时运行第二个查询.

结束编辑.

我能管理的最好的是跟随,它(理论上)运行第一个查询两次,除非缓存它:

IF EXISTS (SELECT * from T where T.A = @a and T.B = @b) THEN
    SELECT * from T where T.A = @a and T.B = @b
ELSE
    SELECT * from T where T.A = @a and T.B IS NULL
Run Code Online (Sandbox Code Playgroud)

值得一提的是,这是在Microsoft SQL Server 2008中

sql sql-server stored-procedures sql-server-2008

5
推荐指数
1
解决办法
5809
查看次数

有没有办法在.Net 3.5中模拟WPF中的UseLayoutRounding

出于安装原因,我想在我的应用程序中使用3.5.我唯一缺少的功能是UseLayoutRounding,它与我的自定义控件非常吻合.有没有办法在3.5中模拟UseLayoutRounding?

c# wpf .net-3.5

5
推荐指数
1
解决办法
740
查看次数

将Backus-Naur形式语法转换为.Net正则表达式

有没有办法将以下Backus-Naur形式(BNF)语法转换为.Net正则表达式?(我并没有停留在BNF,但我认为这可能是解释我想要做的事情的最佳方式).

<field> ::= "<<" <fieldname> <options> ">>"

<options> ::= "" | "(" <option> ")"

<option> ::= "" | 
             <option> <non-paren> | 
             <option> <escaped-character>

<escaped-character> ::= "\\" | "\)"

<non-paren> ::= any character but paren

<fieldname> ::= any string that doesn't contain "(" or ">>"
Run Code Online (Sandbox Code Playgroud)

我很接近,但我无法弄清楚如何应对逃避\).这将捕获命名组中的fieldnameoption:

<<(?<fieldname>.\*?)(\((?<option>.*?)\))?>>
Run Code Online (Sandbox Code Playgroud)

编辑

事实证明,我对BNF语法比我想象的更生气.

我试图得到的是括号是特殊字符.在"选项"部分中,它们必须通过斜杠进行转义.(还必须转义斜线).

.net regex bnf

4
推荐指数
2
解决办法
6365
查看次数

Win32:如何获取组合框的列表框

我正在编写一些代码,我需要获取与组合框关联的列表框的窗口句柄。在 spy++ 中查看时,看起来列表框的父级是桌面,而不是组合框。如何以编程方式找到列表框窗口句柄?

winapi combobox listbox

4
推荐指数
1
解决办法
1909
查看次数

jqGrid:发送编辑数据

我正在尝试在jqgrid上使用表单编辑.当数据发送到网络服务器时,我想在get/post数据中发送一个额外的字段.

听起来像editData是我想要使用的.如何将其挂钩到导航栏?

<script type="text/javascript">
    $(document).ready(function(){ 
        if (jQuery('#ReferenceGrid').attr('role') == 'undefined' || jQuery('#ReferenceGrid').attr('role') == null) {
            var lastSel;
            jQuery('#ReferenceGrid').jqGrid({
                url: '/PlannedWorkOrder/Items/',
                datatype: 'json',
                postData: { referenceNumber: $('#reference').text() },
                colNames: ['Platinum Part Number', 'Quantity'],
                colModel: [
                    { name: 'PlatinumPartNumber', index: 'PlatinumPartNumber', width: 300, sortable: false, editable: true },
                    { name: 'Quantity', index: 'Quantity', width: 300, sortable: false, editable: true, editrules:{integer: true}  },
                ],
                jsonReader: {
                    cell: "",
                    id: "PlatinumPartNumber",
                    repeatitems: false
                },
                search:false,
                viewrecords: true,
                height: '100%',
                sortorder: 'desc',
                caption: 'Details',
                altRows: true, …
Run Code Online (Sandbox Code Playgroud)

jqgrid

4
推荐指数
1
解决办法
2万
查看次数

为什么Visual Studio 2005不会生成Xml序列化程序集?

当我将项目设置"Generate Serialization Assembly"设置为"On"时,为什么Visual Studio 2005不生成序列化设置?

visual-studio-2005 sgen xml-serialization

3
推荐指数
1
解决办法
1261
查看次数

将光栅图像转换为矢量图形的建议

如果一个人希望将大量光栅图像批量转换为矢量图形,那么有没有哪种工具做得那么好?

举个例子,想想几乎所有具有标准形状(椭圆,矩形)和文本的图表.

vector-graphics

3
推荐指数
1
解决办法
2436
查看次数

用于只读字典访问的最有效的内存数据结构

在C#中,我有可能被放入一些静态的数据Dictionary<int, T>,其中T一些引用类型.Web应用程序只需要静态初始化一次(它不会更改).

由于我不必担心插入或删除性能,使用什么是最好的数据结构(或者我应该自己动手)?我可能会看到大约100,000个条目,间隔相当均匀.

我正在寻找一种获取这些数据的最佳算法.Dictionary<>虽然不错,但我认为必须有针对只读数据优化的东西.

我怀疑,但尚未确认这些密钥的范围可能是0 - 400,000.如果是这样的话,建议会如何变化?(我想我会发布一个可能的答案).


也许我可以:

  1. 扫描数据一次并获取最高密钥
  2. 分配具有最高键+ 1的大小的数组.
  3. 再次传递并将数据存储在数组中.

这会比具有合理负载系数的HashTable/Dictionary更好还是更差?

c# readonly data-structures

3
推荐指数
1
解决办法
2565
查看次数

如何在TypeScript中导入JavaScript模块

我有一些JavaScript代码,我正在尝试转换为Typescript.

据说,typescript是JavaScript的超集,除了下面的编译器错误.假设我没有将ko库导入typescript,我将如何转换以下代码:

(function(ko, viewModels){
    viewModels.MyViewModel = function(){
        //stuff in here
    }
}(ko, window.viewModels = window.viewModels || {}));
Run Code Online (Sandbox Code Playgroud)

对于参考,这是我在TypeScript中的尝试

module viewModels {

    export class PartDetailsViewModel {
        public bar: string;
             constructor (){
                 this.bar = ko.foo(); //<-- compiler error, "ko" does not exist in current scope
             }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

import typescript

3
推荐指数
1
解决办法
6190
查看次数