我目前正在开发一个我的小项目,它以动态方式生成SQL调用以供其他软件使用.SQL调用事先是未知的,因此我希望能够对生成SQL的对象进行单元测试.
您是否了解如何才能做到这一点的最佳方法?请记住,没有可能的方法来了解要生成的所有可能的SQL调用.
目前我唯一的想法是使用regex从db创建接受的SQL的测试用例,并确保SQL将编译,但这不能确保调用返回预期的结果.
编辑:添加更多信息:
我的项目是Boo的扩展,允许开发人员使用一组属性标记他的属性.此属性用于标识开发人员如何将对象存储在DB中.例如:
# This attribute tells the Boo compiler extension that you want to
# store the object in a MySQL db. The boo compiler extension will make sure that you meet
# the requirements
[Storable(MySQL)]
class MyObject():
# Tells the compiler that name is the PK
[PrimaryKey(Size = 25)]
[Property(Name)]
private name as String
[TableColumn(Size = 25)]
[Property(Surname)]
private surname as String
[TableColumn()]
[Property(Age)]
private age as int
Run Code Online (Sandbox Code Playgroud)
好主意是生成的代码不需要使用反射,但它会在编译时添加到类中.是的,编译需要更长的时间,但根本不需要使用Reflection.我目前有代码工作生成所需的方法,在编译时返回SQL,它们被添加到对象并可以被调用,但我需要测试生成的SQL是否正确:P
我有一个本体文件(在RDF中),它表示我正在编写的应用程序中的实体.我正在使用Jena,可以通过直接操作三元组来访问Concepts并创建/访问资源.
为了简化操作,我创建了一组Java类,一个用于我的本体中每种类型的资源,同时记住它们的继承和属性.例如
public class Agent{
}
Run Code Online (Sandbox Code Playgroud)
和
public class Person extends Agent{
private String name;
}
Run Code Online (Sandbox Code Playgroud)
如果本体包含两种类型的资源,Agent并且Person后者是前者的子类.
我意识到创建这些类(以及提取它们的方法)的过程非常单调.如果我在数据库上编写应用程序,我会使用Hibernate的配置文件,并让它处理细节.
我的问题是:是否有可用的工具将本体(在RDF文件中)作为输入,并创建一组表示本体中的概念的Java文件,如上例所示?(或者,如果耶拿本身可以做到这一点,我错过了一些东西)
谢谢.
R#4.5(欢迎回答5)
VS2008(欢迎回答VS2010)
C#(FWIW)
我正在使用构造函数(问题也适用于方法),并且有Intellisense:

我还没有为第一个参数"firstName"指定值.今天,我键入"firstName",然后让IDE为我创建该变量(我初始化为某个值).
我知道IDE会为我创建变量.我希望它为我创建变量名称.
我不想输入"firstName".我喜欢参数作者选择的变量名,我想在我的(调用)代码中使用该变量名.
有没有办法让我自动重新生成这些可接受的变量名称(调用代码),因为我按参数参数移动,通过这一行(调用)代码?
我编写了一个代码生成器,为给定的SQL Server/CE数据库生成POCO和存储库.没有什么花哨的,只有简单的CRUD程序才能使用经典的ADO.Net.我的问题是,为什么我应该使用像L2S/EF4这样的ORM而不是自定义代码生成器?每隔2到3年,微软就会发布一些新的数据访问框架/技术,我知道很多开发人员不能总是与最新技术保持联系,但他们每个人都知道经典的ADO.Net,如何修改现有代码以及如何开发新功能.ORM工具是否带来了现在必须的东西,或者我可以坚持使用经典的ADO.Net?
谢谢!
我正在开发一个代码生成器项目,该项目使用可自定义的层创建解决方案 现在我可以通过编写代码中的所有元素来创建.sln文件.但是项目文件不需要这个,可以使用MSBuild Project类进行编辑.
我想添加一个网站项目模板支持等,所以这样我编辑.sln文件并不酷,我想知道有更好的方法来做这个,比如MSBuild或其他什么?
我看到以编程方式生成Visual Studio解决方案,该解决方案说使用Visual Studio SDK(用于扩展visual studio,编写插件......),但是没有任何代码示例.
提前致谢
我试图定义BNF的BNF.换句话说,我试图定义BNF的元语法.也就是说,BNF语法是其自身的实例并且可以生成任何其他BNF语法.
任何提示/提示/片段将非常感谢!
谢谢!
我正在使用Microsoft Visual C#2010.
我在两个文件中有一个类:
file1.cs
partial class SomeClass {
// something
}
Run Code Online (Sandbox Code Playgroud)
file2.cs
partial class SomeClass {
// something else
}
Run Code Online (Sandbox Code Playgroud)
现在,在项目的第三位,当我写" SomeClass.SomeMethod() "并按下Alt + Shift + F10,并选择"生成方法存根..."时,它总是在file1.cs中创建代码.
我的问题是:是否有可能在file2.cs中给出指令,以及如何?
我们目前使用T4模板生成基于C#代码(实体POCO)和EDMX(在旧应用程序中)的C#代码文件
迁移到ASP.NET 5以支持跨平台开发,是否有任何代码生成工具可以读取项目类和元数据结构,并在设计时生成C#文件,类似于T4模板?
基于我在这里找到的前一个例子,我试图找出如何生成一个Fortran代码,该代码对应于我需要坚持的特定形式.所需的FORTRAN代码将如下所示(它基于FitzHugh-Nagumo模型):
SUBROUTINE FF(NE,U,PAR,F)
! ---------- --
! Define the nonlinear term
IMPLICIT NONE
INTEGER, INTENT(IN) :: NE
DOUBLE PRECISION, INTENT(IN) :: U(NE),PAR(*)
DOUBLE PRECISION, INTENT(OUT) :: F(NE)
DOUBLE PRECISION u,v,e,a1,a0
u=U(1)
v=U(2)
e=PAR(1)
a1=PAR(2)
a0=PAR(3)
F(1)= u-u**3-v
F(2)= e*(u-a1*v-a0)
END SUBROUTINE FF
Run Code Online (Sandbox Code Playgroud)
我设法在SymPy中创建正确的表达式,但我还没弄清楚如何生成所需的代码codegen.这是我到目前为止的尝试:
from sympy import symbols,latex
from sympy.utilities.codegen import codegen
from sympy.tensor import IndexedBase, Idx
from sympy import Matrix
U, PAR = symbols('U PAR', cls=IndexedBase)
u = U[1]
v = U[2]
e = …Run Code Online (Sandbox Code Playgroud) 我想为Java或Kotlin做这个:给出下面的代码
try {...
} catch(@AutoLog e:Exception){// position1
}
在构建期间自动在position1添加日志记录语句.我可以使用AspectJ为catch块添加代码(对于Java和Kotlin),但它适用于所有catch块,我无法检查是否存在@AutoLog注释并且只在它出现时才添加代码.所以我想我必须转向Java(或KAPT for Kotlin)的APT(注释处理工具)?
顺便说一句,我在这里找到了一个KAPT代码生成示例:https://github.com/JetBrains/kotlin-examples/tree/master/gradle/kotlin-code-generation ,但它会生成代码来分隔文件,而我想要的是do是修改原始文件/类并在catch块中添加语句.
code-generation ×10
c# ×3
java ×2
ado.net ×1
annotations ×1
aop ×1
asp.net-core ×1
codegen ×1
database ×1
jena ×1
kotlin ×1
msbuild ×1
orm ×1
parameters ×1
python ×1
python-2.7 ×1
rdf ×1
resharper ×1
solution ×1
sympy ×1
t4 ×1
testing ×1
unit-testing ×1