有几种工具如何为给定的正则表达式生成样本数据.一些包括:
但是,虽然它们可能足以为数据集设定种子,但它对测试依赖于正则表达式本身的代码(例如验证)没有太大帮助.
假设您有一个代码生成器,可以生成带有属性的模型.用户指定正则表达式来验证属性.现在假设代码生成器正在尝试生成测试以确保验证成功并且适当地失败.该工具专注于正则表达式中的边界情况以避免生成不必要的数据似乎是合理的.
例如,考虑一个正则表达式^([a-z]{3,6})$然后边界情况包括:
关注边界情况的原因是任何仅由[az]组成的长度大于6的字符串都会验证正则表达式中定义的字符串长度的上边界.因此,测试长度为7,8,9的字符串实际上只是测试相同(边界)条件.
这是一个因其简单而选择的任意正则表达式,但任何合理的正则表达式都可以作为输入.
是否存在框架/工具,代码生成器可以使用它来为正在生成的系统的不同层的测试用例生成输入字符串.当系统不再在开发周期的后期生成和修改时,测试用例就会出现.
我们在Android,iPhone和Windows Phone上有一个服务器(Java + Spring)和客户端项目.所有交互都将通过JSON格式实现.我们只想描述我们的协议一次,而不是通过此描述为所有客户端生成Java,C#和Obj-C类.我们正在寻找一种工具,比如Google ProtoBuf编译器(protoc).但是ProtoBuf生成了太复杂的代码,在这种情况下对我们来说没用,因为我们想要使用JSON而不是二进制序列化.有任何现成的解决方案吗?
什么是"好"的java代码生成库?我在JaxMe中找到了一代人,但它很穷而且年老.我喜欢通过java代码生成java代码.所以基本上使用一个lib告诉它必须生成一个具体的类或接口与X字段,Y方法等,然后写入文件系统..我知道框架使用它们,但找不到一个独立的lib .. - Ed
我有一个用C++编写的程序,它为数学计算生成C源代码.我注意到常量在生成的代码中占用了很多空间,我正在寻找更紧凑的表示.
要生成常量,我现在使用:
double v = ...
cfile << std::scientific << std::setprecision(std::numeric_limits<double>::digits10 + 1) << v;
Run Code Online (Sandbox Code Playgroud)
我很确定这是一种无损代表,但它也非常臃肿.例如,零和一个将表示为0.0000000000000000e + 00和1.0000000000000000e + 00.并且"0" 或"1." 携带同样多的信息.
有没有办法以更紧凑但仍然无损的方式打印常量?它并不需要好看的人类读者,只是编译当存在于普通的C代码(如C99,我宁愿当它也是有效的C++).十六进制可以是可移植的.
编辑:已删除std::fixed代码段.
我正在创建一个自动化工具,用于将属性插入到现有类的源代码中.例如,我有一个像这样的现有源代码:
public class MyClass
{
//class members goes here
}
Run Code Online (Sandbox Code Playgroud)
我想修改它变成这样
public class MyClass
{
//class members goes here
public string MyProp { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
并将其保存到同一个文件中.
类名,属性类型和属性名称将事先知道,并且可以被视为操作的参数.知道如何轻松做到这一点吗?也许正则表达式替换将适用于此,但我不知道使用哪个表达式将是灵活的,无论源代码的新行,空格和标识策略.
编辑:我正在寻找的只是自动生成源代码,而不是在运行时操作类
我试图对一些Java代码进行源代码转换,这些代码导致代码,对于每个表达式,如果计算表达式,则调用方法.
(用例是一种简单的线覆盖度量.我以前在JavaScript中做过这样的事情:<my-expression>成为(covered("path/to/file.js", 12), <my-expression>)或者什么,其中12是表达式的行号).
Java没有逗号运算符.我想在方法调用中包装表达式,例如我的covered函数将被声明public static <T> T covered(String file, int line, T expr)并返回它的第三个参数,所以我可以编写,covered("path/to/file.java", 12, myExpression())但它不适用于具有类型的表达式void.
有没有一种简单的方法来实现这一目标?邪恶的代码是可以的; 这是生成的代码.
我最近开始使用Eclipse Kepler CDT.在输入类数据成员之后,我希望能够为类构造函数生成代码.使用Eclipse编写Java开发,我会通过右键单击并使用Source子菜单中的构造函数生成条目(Alt + Shift + S)来完成此操作; 但是,编写C++,这个功能不可用......或者是它?
我想在编译期间检查是否使用/不使用某些类的某些函数,并因此失败/通过编译过程.
例如,如果函数F1在代码中的某处被调用,我希望编译成功,如果函数F2被调用,我希望它失败.
有关如何使用预处理器,模板或任何其他c ++元编程技术的任何想法?
c++ templates code-generation metaprogramming c-preprocessor
我看到只有两个快速的授权选项.
一个是Source -> Generate Delegate Methods.这样,Eclipse将委托成员的所有(或选定)方法实现为委托方法.
另一个是Source -> Override/Implement Methods.这样Eclipse将实现接口的所有(或选定)方法作为存根方法.
两种选择都不完整.第一个生成太多方法(可能会生成不在接口中的方法).第二个不生成好的方法,只生成存根.
是否可以将两者结合起来,即为委托成员生成所有方法,但是通过接口过滤?
我更喜欢使用基本类型的实际类型名称而不是相应的关键字,例如String代替string,Int32而不是int等等,因为我喜欢一致的语法高亮和套管 - 也就是说,类型名称的颜色类似于类型名称(浅蓝色)和正确套装(大写第一个字母).
我怎么能告诉VS每当它生成任何代码时(例如当我在接口名称上选择"实现接口"选项,或者自动生成的事件处理程序等等)时,它应该根据我的喜好添加类型名?
code-generation ×10
c# ×4
java ×4
c++ ×3
eclipse ×2
regex ×2
.net ×1
c ×1
codegen ×1
constructor ×1
delegates ×1
eclipse-cdt ×1
hex ×1
lossless ×1
mdd ×1
objective-c ×1
string ×1
templates ×1
testing ×1