我在几个项目中使用了Eclipse Xtext.我喜欢在Ecore(meta)模型上定义语法的简易性,并为你生成所有内容,包括令人敬畏的Eclipse插件编辑器,但我对基础EMF框架感到非常不舒服,所有内容都在静态字段中进行了硬连接.
最近我遇到了Jetbrains的MPS(元编程系统).它基于完全不同的哲学.虽然Xtext用于创建基于文本的DSL,为您生成解析器(并实例化那些EObject),但在MPS创建的语言中,可直接编辑基础模型结构.到目前为止,我明白了.
有没有人使用这两种DSL工具来指出在使用它们方面的主要差异,预期用例和受众,复杂性,学习曲线(说实话,开始使用Xtext应该对EMF的内容有很多了解) ,代码生成等?
我们的团队愿意对在扩展现有庞大Oracle系统的正在运行的项目下编写的新代码进行单元测试.
该系统仅由PL/SQL编写,由数千个表,数百个存储过程包组成,主要从表中获取数据和/或插入/更新其他数据.
我们的延期也不例外.大多数函数从非常复杂的SELECT语句返回数据,通过许多相互绑定的表(在返回它们之前添加一些逻辑)或者从一个复杂的数据结构转换到另一个(以另一种方式复杂化).
对这些代码进行单元测试的最佳方法是什么?
现有代码库没有单元测试.更糟糕的是,只有包,触发器和视图是源控制的,表结构(包括"alter table"内容和必要的数据转换是通过除版本控制之外的通道部署的).在我们的项目范围内无法改变这一点.
维护测试数据似乎是不可能的,因为每周都有新的代码部署到生产环境中,通常没有事先通知,经常改变数据结构(在这里添加一列,在那里删除一个).
我很高兴有任何建议或参考来帮助我们.一些团队成员往往厌倦了弄清楚如何开始我们的经验,单元测试不包括PL/SQL数据密集型遗留系统(只有那些"来自本书"的绿地Java项目).
我只需要一些非常简单的东西,比如"运行此命令,如果在控制台输出中某处存在'此字符串',则会成功,否则会失败".有这样的工具吗?
我很好奇,因为我在Scala库代码中看到了它们,但我发现谷歌很难对它们说些什么,因为它们的名字不是单词.
我有两个特征,一个扩展另一个,每个都有一个内部类,一个扩展另一个,具有相同的名称:
trait A {
class X {
def x() = doSomething()
}
}
trait B extends A {
class X extends super.X {
override def x() = doSomethingElse()
}
}
class C extends B {
val x = new X() // here B.X is instantiated
val y = new A.X() // does not compile
val z = new A.this.X() // does not compile
}
Run Code Online (Sandbox Code Playgroud)
如何访问A.X
班级中的C
班级?重命名B.X
不隐藏A.X
不是首选方式.
为了使事情有点复杂,在我遇到此问题的情况下,特征具有类型参数(在此示例中未示出).
scala ×2
unit-testing ×2
batch-file ×1
dsl ×1
eclipse-emf ×1
hidden ×1
legacy ×1
mps ×1
oracle ×1
overriding ×1
plsql ×1
tdd ×1
xtext ×1