我目前正在开发一个我的小项目,它以动态方式生成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?
谢谢!
在Eclipse/Netbeans或visual studio中是否有可用于C语言的自动单元测试用例生成器?
在这个意义上的生成器,如果我给出一个文件,它应该为所有函数生成单元测试用例.(比如Netbeans的jUnit制造商).
运行生成器输出文件后,代码看起来真的很混乱.我知道我可能永远不会查看这些文件,但很高兴看到在开发生成器时生成的代码结构很好.
欢迎任何建议.
基于我在这里找到的前一个例子,我试图找出如何生成一个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块中添加语句.
我试图通过计算公式来计算e常数(又名欧拉数)
为了一次性计算阶乘和除法,我写了这个:
my @e = 1, { state $a=1; 1 / ($_ * $a++) } ... *;
say reduce * + * , @e[^10];
Run Code Online (Sandbox Code Playgroud)
但它没有成功。如何正确地做到这一点?
我希望我的页面类继承以下基类:
public abstract class BaseContentPage<T> : ContentPage where T : BaseViewModel
{
public BaseContentPage(T viewModel, string pageTitle)
{
BindingContext = ViewModel = viewModel;
Title = pageTitle;
}
protected T ViewModel { get; }
}
public partial class MainPage : BaseContentPage<MainVm>
{
public MainPage(MainVm vm) : base(vm, "Hello")
{
InitializeComponent();
}
}
Run Code Online (Sandbox Code Playgroud)
页面类是部分的,我想,MAUI 会生成一些具有不同父类的隐藏代码。然后我收到以下错误:
CS0263:“类型”的部分声明不得指定不同的基类
有没有办法指定生成的分部类的父类?
编辑
public abstract class BaseContentPage<T> : ContentPage where T : BaseViewModel
{
public BaseContentPage(T viewModel, string pageTitle)
{
BindingContext = ViewModel = …Run Code Online (Sandbox Code Playgroud)code-generation ×10
c# ×2
java ×2
unit-testing ×2
.net ×1
ado.net ×1
annotations ×1
aop ×1
c ×1
codegen ×1
database ×1
inheritance ×1
jena ×1
kotlin ×1
maui ×1
orm ×1
parameters ×1
python ×1
python-2.7 ×1
raku ×1
rdf ×1
resharper ×1
sympy ×1
t4 ×1
testing ×1