我们的团队愿意对在扩展现有庞大Oracle系统的正在运行的项目下编写的新代码进行单元测试.
该系统仅由PL/SQL编写,由数千个表,数百个存储过程包组成,主要从表中获取数据和/或插入/更新其他数据.
我们的延期也不例外.大多数函数从非常复杂的SELECT语句返回数据,通过许多相互绑定的表(在返回它们之前添加一些逻辑)或者从一个复杂的数据结构转换到另一个(以另一种方式复杂化).
对这些代码进行单元测试的最佳方法是什么?
现有代码库没有单元测试.更糟糕的是,只有包,触发器和视图是源控制的,表结构(包括"alter table"内容和必要的数据转换是通过除版本控制之外的通道部署的).在我们的项目范围内无法改变这一点.
维护测试数据似乎是不可能的,因为每周都有新的代码部署到生产环境中,通常没有事先通知,经常改变数据结构(在这里添加一列,在那里删除一个).
我很高兴有任何建议或参考来帮助我们.一些团队成员往往厌倦了弄清楚如何开始我们的经验,单元测试不包括PL/SQL数据密集型遗留系统(只有那些"来自本书"的绿地Java项目).
让我们考虑以下3个代码行:
struct stat buffer;
status = lstat(file.c_str(), &buffer);
bool Flag = S_ISREG(buffer.st_mode)
Run Code Online (Sandbox Code Playgroud)
当S_ISREG()返回时,true它告诉您该文件是常规文件
常规意味着什么?
谢谢
我们有这个XML:
<Summary>
<ValueA>xxx</ValueA>
<ValueB/>
</Summary>
Run Code Online (Sandbox Code Playgroud)
<ValueB/>永远不会有任何属性或内在元素.它是一个布尔类型元素 - 它存在(true)或不存在(false).
JAXB使用String valueA成员生成了一个Summary类,这很好.但是对于ValueB,JAXB生成了一个ValueB内部类和一个相应的成员:
@XmlElement(name = "ValueB")
protected Summary.ValueB valueB;
Run Code Online (Sandbox Code Playgroud)
但我想要的是boolean成员而没有内在阶级:
@XmlElement(name = "ValueB")
protected boolean valueB;
Run Code Online (Sandbox Code Playgroud)
你怎么能这样做?
我不打算重新生成类,我想手动更改代码.
更新:根据接受的答案,我们创建了一个新方法,返回布尔值,条件是valueB == null.
当我们使用Hibernate时,我们用@Transient带有Hibernate注释的boolean getter 注释valueB 并注释它@Column.
我有一个我写的程序,不是太大.除了主要功能外,它还有大约15个其他功能,可以在不同时间调用各种任务.代码在一个文件中工作得很好,就像现在一样.
但是,我想知道是否有人有任何建议是否更智能/更高效/更好的编程将这些功能放在一个不同于main的单独文件中,或者它是否甚至是重要的.如果是,为什么?如果不是,为什么不呢?
我不是C++的新手,但绝对不是专家,所以如果你认为这个问题很愚蠢,请随时告诉我.
谢谢你的时间!
这样安全吗?我在实际实现中没有使用任何虚函数,但我很想相信即使我是,它仍然是安全的.
class Foo
{
Foo()
{
// initialize things
}
Foo( int )
{
new ( this ) Foo();
}
}
Run Code Online (Sandbox Code Playgroud) 我最近放弃了尝试在Eclipse中使用Scala(像完成这样的基本内容不起作用).所以现在我正在尝试使用IntelliJ.我没有走得太远.
我已经能够编辑程序了(在语法高亮和完成之内......耶!).但我甚至无法运行最简单的"Hello World".这是原始错误:
Scala signature Predef has wrong version Expected 5.0 found: 4.1 in .... scala-library.jar
但那是昨天的IDEA 9.0.1.见下文...
UPDATE
今天我卸载了IntelliJ 9.0.1,并安装了9.0.2 Early Availability,以及4/14稳定版的Scala插件.
然后我从头开始通过向导设置一个项目:
创建了一个新类:
object hello {
def main(args: Array[String]) {
println("hello: " + args);
}
}
对于我的努力,我现在有一个全新的错误:)
这里是:
Scalac内部错误:类java.lang.ClassNotFoundException [java.net.URLClassLoader $ 1.run(URLClassLoader.java:202),java.security.AccessController.doPrivileged(Native Method),java.net.URLClassLoader.findClass(URLClassLoader.java) :190),java.lang.ClassLoader.loadClass(ClassLoader.java:307),sun.misc.Launcher $ AppClassLoader.loadClass(Launcher.java:301),java.lang.ClassLoader.loadClass(ClassLoader.java:248) ,java.lang.Class.forName0(本机方法),java.lang.Class.forName(Class.java:169),org.jetbrains.plugins.scala.compiler.rt.ScalacRunner.main(ScalacRunner.java:72) ]
最终更新
我卸载了9.0.2 EA并重新安装了9.0.1,但这次使用的是2.7.3版本的Scala而不是默认的2.7.6,因为2.7.3是IntelliJ网站屏幕截图中显示的那个(我猜屏幕截图证明他们实际测试了这个版本!).现在一切正常!!!
我有一个关于算法的问题:
如何查找外观大于特定数字的字符串中的所有字符,例如2有效?
问候.
何时以及如何使用<resource-bundle>和<message-bundle>标记本地化faces-config.xml?这两者之间的差异对我来说不是很清楚.
我正在转换C#这个LINQ表达式.但是,它似乎不起作用.
C#
return (from w in fishSticks
group w by w.FishQty into g
orderby g.Key descending
select g).First().First();
Run Code Online (Sandbox Code Playgroud)
VB
Return (From w In fishSticks
Group w By w.FishQty Into g()
Order By g.Key Descending
Select g).First().First()
Run Code Online (Sandbox Code Playgroud)
Visual Studio变成Into g了Into g()自己然后给了我这个错误:
在此上下文中无法访问方法"g"的定义.
有任何想法吗?