UnfinishedVerificationException当我认为我已经完成了所有事情时,Mockito似乎正在投掷.这是我的部分测试用例:
HttpServletRequest req = mock(HttpServletRequest.class);
when(req.getHeader("Authorization")).thenReturn("foo");
HttpServletResponse res = mock(HttpServletResponse.class);
classUnderTest.doMethod(req, res); // Use the mock
verify(res, never());
verify(req).setAttribute(anyString(), anyObject());
Run Code Online (Sandbox Code Playgroud)
这是部分类和方法:
class ClassUnderTest extends AnotherClass {
@Override
public String doMethod(ServletRequest req, ServletRequest res) {
// etc.
return "someString";
}
}
Run Code Online (Sandbox Code Playgroud)
忽略你不应该模仿你不拥有的接口的事实,为什么Mockito给我以下信息?
org.mockito.exceptions.misusing.UnfinishedVerificationException:
Missing method call for verify(mock) here:
-> at (redacted)
Example of correct verification:
verify(mock).doSomething()
Also, this error might show up because you verify either of: final/private/equals()/hashCode() methods.
Those methods *cannot* be stubbed/verified.
at [test method name and …Run Code Online (Sandbox Code Playgroud) Lists上的API Cheatsheet部分似乎表明它'()是一个列表构造函数,就像(list),但我发现在实践中它们并不完全相同.例如,给定:
(def foo "a")
(def bar "b")
(def zip "c")
Run Code Online (Sandbox Code Playgroud)
以下声明:
(apply str '(foo bar zip))
Run Code Online (Sandbox Code Playgroud)
产生输出"foobarzip",我不指望.
但据称相当于:
(apply str (list foo bar zip))
Run Code Online (Sandbox Code Playgroud)
正如我所料,产生"abc".
这里发生了什么?如果在Clojure中有一个列表的"简写"(比如{}地图和[]向量),它是什么?
我有一个小的Clojure程序,它使用Clojure JDBC工具在HSQL数据库中创建一个表.但是,如果我从Leiningen的REPL运行它,它似乎只是实际创建表.如果我使用lein runIDE或从我的IDE(IntelliJ)运行代码,它不会创建表.没有例外报道.在这两种情况下,输出只是"(0)".
这是代码片段:
(ns tramway.core
(:require [clojure.java.io :as io]
[clojure.java.jdbc :as sql]))
(def hsql-db {:subprotocol "hsqldb"
:subname "file:/tmp/tramwaydb"
:user "SA"
:password ""})
(defn -main []
(println (sql/with-connection hsql-db (sql/create-table
:footfall
[:id "INTEGER" "GENERATED ALWAYS AS IDENTITY(START WITH 1)"]
[:sample_date "DATE"]
[:exhibition "varchar(255)"]))))
Run Code Online (Sandbox Code Playgroud)
因为我正在使用Leiningen,所以这是我的project.clj:
(defproject tramway "1.0.0-SNAPSHOT"
:description "Description here"
:dependencies [[org.clojure/clojure "1.3.0"]
[org.clojure/java.jdbc "0.1.4"]
[org.hsqldb/hsqldb "2.2.8"]]
:main tramway.core)
Run Code Online (Sandbox Code Playgroud)
如果我做:
$ lein repl
tramway.core=> (-main)
(0)
nil
Run Code Online (Sandbox Code Playgroud)
然后检查/tmp/tramway.log我可以看到CREATE TABLE执行成功.
但是,如果我这样做: …
我有一个带有两个子模块的Maven2项目,如下所示:
parentproject
|---war-file-project
|---applet-project
Run Code Online (Sandbox Code Playgroud)
每个POM中都有适当的父模块关系.它applet-project包含一个简单的applet,并使用JAR包装进行设置.它war-file-project包含一个简单的WAR文件项目,并使用WAR包装进行设置.
当我建,我想,以确保该WAR文件包含生成的JAR文件applet-project的/applets目录.
我该怎么做呢?
我有一个最初是为Java 1.4编写的项目,但我的Mac上只有Java 6,我无法安装Java 1.4.
通常,我会使用这样的一行来编译:
javac -source=1.4 -target=1.4 MyClass.java
Run Code Online (Sandbox Code Playgroud)
但是,MyClass.java实现了java.sql.ResultSet接口,它在Java 6中添加了几个新方法,因此我得到了如下编译错误:
MyClass is not abstract and does not override abstract method
updateNClob(java.lang.String,java.io.Reader) in java.sql.ResultSet
Run Code Online (Sandbox Code Playgroud)
我不能简单地实现缺少的方法,因为许多使用泛型,这在Java 1.4中是不可用的.
似乎解决方案是获取和编译Java 1.4 JAR.所以,我有几个问题:
javac我想使用1.4 JAR而不是Java 6 JAR?谢谢!
我正在实施用于API身份验证的两条腿OAuth协议的提供程序端.我们将向消费者提供消费者密钥和秘密,他们将使用这些密钥和密钥来签署请求.两条腿OAuth由互操作性标准决定,因此是一项要求.
秘密类似于密码,我通常不会将密码存储为纯文本(bCrypt或类似的将是我的正常选择).但是因为我的提供者需要访问纯文本秘密来验证签名,所以它必须是一些纯文本或可逆形式.
我考虑过以下选项:
这是最明显的解决方案,但如果数据库以某种方式受到损害,那么所有的秘密都必须改变.对我来说,这个解决方案并不理想,因为它具有以纯文本形式存储密码的所有问题.
这将提供一些安全性,因为如果数据库被泄露,那么秘密仍然是安全的.但是可逆加密需要加密密钥,密钥必须存储在服务器上.这意味着如果攻击者破坏了计算机,则可以规避加密.
有什么我没有想到的吗?
澄清有效地,它使用2腿Oauth作为单点登录系统.'consumer'创建一个请求,包括使用者密钥,nonce和其他几个参数.然后通过计算具有消费者秘密的HMAC-SHA1来签署整个请求.当请求到达我们的提供者系统时,重复该过程,如果签名匹配,则继续请求处理.因此,我们需要明文秘密来计算我们方面的HMAC-SHA1签名.不幸的是,这种机制是由我们需要遵守的行业标准协议决定的.
我让用户输入我需要在表中查询的值列表。该列表可能非常大,并且长度在编译时未知。我认为使用WHERE ... IN (...)临时表并对其执行联接会更有效,而不是使用它。我在另一个SO问题中读到了这个建议(目前找不到它,但会在找到时进行编辑)。
要点是这样的:
CREATE TEMP TABLE my_temp_table (name varchar(160) NOT NULL PRIMARY KEY);
INSERT INTO my_temp_table VALUES ('hello');
INSERT INTO my_temp_table VALUES ('world');
//... etc
SELECT f.* FROM foo f INNER JOIN my_temp_table t ON f.name = t.name;
DROP TABLE my_temp_table;
Run Code Online (Sandbox Code Playgroud)
如果我同时运行其中两个,那么如果线程 2 尝试在线程 1 之后创建 TEMP 表,我不会收到错误吗?
我应该为 TEMP 表随机生成一个名称吗?
或者,如果我将整个事情包装在一个事务中,命名冲突会消失吗?
这是 PostgreSQL 8.2。
谢谢!
我有一个Tomcat 5.5 Web应用程序,它使用Apache Commons-Configuration库在运行时生成XML配置文件.反过来,Commons-Configuration使用javax.xml.transformJAXP API来完成此任务.
自升级到Java 7以来,操作失败,并显示以下错误消息:
Caused by: javax.xml.transform.TransformerFactoryConfigurationError: Provider org.apache.xalan.processor.TransformerFactoryImpl not found
at javax.xml.transform.TransformerFactory.newInstance(Unknown Source)
Run Code Online (Sandbox Code Playgroud)
在过去的版本中,我从未捆绑过xalan.jar,而是依赖于平台默认的XSLT实现.
我检查过的一些事情:
META-INF/services/javax.xml.transform.TransformerFactory我的任何应用程序JAR文件,库jar或Tomcat jar中都没有条目javax.xml.transform.TransformerFactory系统属性未设置(在通过JVisualVM运行时验证)jaxp.properties文件jre/lib运行with -Djaxp.debug=1会产生以下输出:
JAXP: find factoryId =javax.xml.transform.TransformerFactory
JAXP: loaded from fallback value: org.apache.xalan.processor.TransformerFactoryImpl
Run Code Online (Sandbox Code Playgroud)
这个后备价值来自哪里?Oracle发布了Xalan变压器,但由于1.7已将其重新打包为com.sun.org.apache.xalan.processor....不应该说是回退值?
我正在使用xmlstarletchangeSet从liquibase XML 变更日志中提取viewName以“v”结尾的节点。
然而,xmlstarlet 抱怨ends-withXPATH 函数不存在:
$ xmlstarlet sel -N x="http://www.liquibase.org/xml/ns/dbchangelog" -t -m \
"/x:databaseChangeLog/x:changeSet[x:createView[ends-with(@viewName, 'v')]]" \
-c . public.db.changelog.xml
xmlXPathCompOpEval: function ends-with not found
Unregistered function
Stack usage errror
xmlXPathCompiledEval: 3 objects left on the stack.
runtime error: element for-each
Failed to evaluate the 'select' expression.
None of the XPaths matched; to match a node in the default namespace
use '_' as the prefix (see section 5.1 in the manual).
For …Run Code Online (Sandbox Code Playgroud) java ×3
clojure ×2
applet ×1
cdn ×1
google-cdn ×1
hsqldb ×1
javascript ×1
jaxp ×1
junit ×1
junit5 ×1
leiningen ×1
macos ×1
maven ×1
maven-2 ×1
mockito ×1
oauth ×1
postgresql ×1
security ×1
sql ×1
temp-tables ×1
tomcat ×1
transactions ×1
unit-testing ×1
war ×1
xmlstarlet ×1
xpath ×1
xslt ×1