我想知道如何对抽象类进行单元测试,以及扩展抽象类的类.
我应该通过扩展它来测试抽象类,删除抽象方法,然后测试所有具体方法吗?然后只测试我覆盖的方法,并在单元测试中测试扩展我的抽象类的对象的抽象方法?
我是否应该有一个抽象的测试用例,可以用来测试抽象类的方法,并在我的测试用例中为扩展抽象类的对象扩展这个类?
请注意,我的抽象类有一些具体的方法.
我在使用带有以下映射的JPA删除孤立节点时遇到问题
@OneToMany (cascade = CascadeType.ALL, fetch = FetchType.EAGER, mappedBy = "owner")
private List<Bikes> bikes;
Run Code Online (Sandbox Code Playgroud)
我遇到了挂在数据库周围的孤立角色的问题.
我可以使用注释org.hibernate.annotations.CascadeHibernate特定标记,但显然我不想将我的解决方案绑定到Hibernate实现.
编辑:似乎JPA 2.0将包括对此的支持.
首先介绍一下应用程序的背景.我有一个应用程序通过线程池并行处理许多独立的任务.线程池现在挂起了.
以下是我的线程转储的片段,pool-2中的所有线程都被"pool-2-thread-78"阻塞.它似乎被锁定试图写入控制台,我觉得非常奇怪.任何人都可以为我阐明情况吗?
编辑:平台详细信息java版"1.6.0_07"Java(TM)SE运行时环境(版本1.6.0_07-b06)Java HotSpot(TM)客户端VM(版本10.0-b23,混合模式,共享)
Ubuntu Linux服务器双核四核机.
它似乎在写入printstream时锁定,我考虑过只删除控制台appender然而我宁愿知道它为什么阻塞并根据这些知识删除它.在过去删除,看看它是否有效已经回来咬我:)
我的log4j中的相关部分
log4j.rootLogger = DEBUG,STDOUT log4j.logger.com.blah = INFO,LOG log4j.appender.STDOUT = org.apache.log4j.ConsoleAppender log4j.appender.LOG = org.apache.log4j.FileAppender
线程转储提取
"pool-2-thread-79"Id = 149 BLOCKED org.apache.log4j.spi.RootLogger@6c3ba437由"pool-2-thread-78"Id = 148所有,位于org.apache.log4j.Category.callAppenders( Category.java:201)org.apache.log4j.Category.forcedLog(Category.java:388)atg.apache.log4j.Category.error(Category.java:302)at com.blah.MessageProcessTask.run(MessageProcessTask .java:103)at java.util.concurrent.Executors $ runnableAdapter.call(Executors.java:441)at java.util.concurrent.FutureTask $ Sync.innerRun(FutureTask/java:268)at java.util.concurrent. FutureTask.run(FutureTask/java:54)java.util.concurrent.ThreadPoolExecutor $ Worker.runTask(ThreadPoolExecutor.java:885)java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:907)at java .lang.Thread.run(Thread.java:619)
java.io.FileOutputStream.write(FileOutputStream.java:260)java.io.FileOutputStream.writeBytes(Native Method)中的"pool-2-thread-78"Id = 148 RUNNABLE(BufferedOutputStream) .java:105) - 在java.io.PrintStream.write(PrintStream.java:430)上锁定<0x6f314ba4>(java.io.BufferedOutputStream) - 在org.apache上锁定<0xd5d3504>(java.io.PrintStream) .log4j.ConsoleAppender $ SystemOutStream.write(ConsoleAppender.java:173)at sun.nio.cs.StreamEncoder.writeBytes(StreamEncoder.java:202)at sun.nio.cs.StreamEncoder.implFlushBuffer(StreamEncoder.java:272)at at sun.nio.cs.StreamEncoder.implFlush(StreamEncoder.java:276)at sun.nio.cs.StreamEncoder.flush(StreamEncoder.java:122) - 在java上锁定了<0x6243a076>(java.io.OutputStreamWriter).oro.OutputStreamWriter.flush(OutputStreamWriter.java:212)org.apache.log4j.helpers.QuietWriter.flush(QuietWriter.java:57)org.apache.log4j.WriterAppender.subAppend(WriterAppender.java:315)at org .apache.log4j.WriterAppender.append(WriterAppender.java:159)atg.apache.log4j.AppenderSkeleton.doAppend(AppenderSkeleton.java:230) - 在org上锁定<0x45dbd560>(一个org.apache.log4j.ConsoleAppender). org.apache.log4j.Category.callAppenders(Category.java:203)中的apache.log4j.helpers.AppenderAttachableImpl.appendLoopOnAppenders(AppenderAttachableImpl.java:65) - 已锁定<0x6c3ba437>(org.apache.log4j.spi.RootLogger)在org.apache.log4j.Category.forcedLog(Category.java:388)org.apache.log4j.Category.error(Category.java:302)com.blah.MessageProcessTask.run(MessageProcessTask.java:103)at java.util.concurrent.Executors $ runnableAdapter.call(Executors.java:441)at java.util.concurrent.FutureTask $ Sync.innerRun(FutureTask/java:268)at java.util.concurrent.FutureTask.run …
我希望我正确地措辞这一点,以了解我正在寻找的东西.
我需要比较两段文字.如果这两个字符串是相似的,我想得到非常相似的分数,如果字符串非常不同,我需要非常不同的分数.
如果我采用电子邮件的md5哈希值并更改一个字符,哈希值会发生显着变化,我希望某些内容不会发生太大变化.我需要比较两个内容的相似程度,而不存储字符串.
更新:我现在正在考虑结合人们提供的各种链接中的一些想法.理想情况下,我会喜欢一个输入函数来创建我的分数所以我正在寻找使用引用字符串来始终比较我的输入.我也在考虑收集asci角色并总结这些.仍在阅读所有提供的链接.
我的代码中有一个静态方法,我想以某种方式来模拟.
我正在使用jmock.
我认为我可以这样做的一种方法是在静态方法周围使用"包装类"并模拟这个,但我希望有一个更好的解决方案.
我这是错误的方式吗?
反馈:
我将有一个接口和类有一个方法,只是调用静态方法.它允许我通过模拟对这个包装类的调用来模拟逻辑.(即使谈论它我也觉得很脏:))
在NIO2上可用的INTERNET上的所有源/样本都没有TLS/SSL支持,
java.nio.channels.AsynchronousSocketChannel
java.nio.channels.AsynchronousServerSocketChannel
据我所知,连接的SSLEngine生命周期与AsynchronousSocketChannel.connect && AsynchronousServerSocketChanne.accept不同,TLS/SSL应该封装在AIO实现中,所以如何才能使用它们?注意:我在Grizzly项目中是一个视频,谈论他们已经实现了它,我查看了源代码,但是我看到了AIO而不是TLS/SSL集成......
提前致谢!
我是Clojure的新手,我在运行单元测试时遇到了一些麻烦.
(ns com.bluepojo.scratch
(:require clojure.test))
(defn add-one
([x] (+ x 1))
)
(is (= (add-one 3) 4))
Run Code Online (Sandbox Code Playgroud)
得到:
java.lang.Exception: Unable to resolve symbol: is in this context
Run Code Online (Sandbox Code Playgroud)
我错过了什么?
更新:
这有效:
(clojure.test/is (= (add-one 3) 4))
Run Code Online (Sandbox Code Playgroud)
我如何做到这一点,以便我不必在之前声明clojure.test?
我正在尝试防止重复条目被添加到ArrayList,因为在读取文件的每一行时正在填充列表.文件的每一行都采用"node1 node2"格式(制表符分隔符).这里的副本可以是"node1 node2"或"node2 node1".这是我尝试执行此操作的代码:
while((line = bufferedReader.readLine()) != null) {
String delimiter = "\t";
String[] tempnodelist;
tempnodelist = line.split(delimiter);
for (int i=0; i <= edgesnumber; i++) { //edgesnumber = edges.size()
if (tempnodelist[0] && tempnodelist[1] != edges.get(i)) {
edges.add(line);
}
}
nodes.add(tempnodelist[0]);
nodes.add(tempnodelist[1]); //intial intended use of tempnodelist.
Run Code Online (Sandbox Code Playgroud)
}
因为我已经拆分每一行来制作每个节点的HashSet,所以我试图用它来检查重复项.目前我似乎无法正确使用语法.我如何检查ArrayList的先前条目是否有重复项,并防止它们被添加,whist继续填充ArrayList?这个代码目前有什么问题?
如果有任何不清楚的地方,请询问任何问题,
提前致谢!
我刚接触OpenLaszlo开发,并尝试过Eclipse(希望能够完成代码),但发现它太重了我的口味.回到使用Textmate,但OpenLaszlo的捆绑包非常过时了.
有什么建议?或者我应该卷起袖子为Textmate写一个新包?
我按照angular.io入门项目使用种子结构.到目前为止一切都还可以.
现在我想更改顶部组件以从分离的文件中获取视图,然后我遇到了麻烦.工作代码是:
import {Component, View} from 'angular2/core';
@Component({
selector: 'my-app',
template: '<h1>Angular2</h1>',
directives: []
})
export class AppComponent {
constructor() {
}
}
Run Code Online (Sandbox Code Playgroud)
然后我将模板更改为templateUrl,如下所示:
templateUrl: 'app.component.html',
我在这个文件中的代码与以前完全相同
<h1>Angular2</h1>
工作似乎很明显,但事实并非如此.它没有吐出错误,但除了"loading ...."消息之外,它没有显示任何内容,如在入门演示中那样
谢谢你的帮助
彼得