小编sem*_*ral的帖子

JUnit测试说明

是否有可能在JUnit中为未来的读者添加测试的简要描述(例如,正在测试的内容,一些简短的解释,预期的结果......)?我的意思是在ScalaTest中,我可以写:

test("Testing if true holds") {
  assert(true)
}
Run Code Online (Sandbox Code Playgroud)

理想的方法是使用一些注释,例如

@Test
@TestDescription("Testing if true holds")
public void testTrue() {
    assert(true);
}
Run Code Online (Sandbox Code Playgroud)

因此,如果我使用Maven(或某些类似的工具)运行这样的带注释的测试,我可以使用ScalaTest获得与SBT中相似的输出:

- Testing if entity gets saved correctly
- Testing if saving fails when field Name is not specified
- ...
Run Code Online (Sandbox Code Playgroud)

目前,我可以使用非常长的方法名称或编写javadoc注释,这些注释在构建输出中不存在.

谢谢.

java testing junit

21
推荐指数
4
解决办法
2万
查看次数

Spring环境中的域驱动设计和事务

我曾经围绕贫血领域模型设计我的应用程序,因此我有许多存储库对象,这些对象被注入到大的,胖的,事务感知服务层.此模式称为事务脚本.它不是一个好的做法,因为它导致了程序代码,所以我想继续前进到域驱动设计.

在网上阅读了几篇文章后,听了Chris Richardson关于Parleys的演讲并阅读了POJO in Action的DDD章节,我想我已经了解了全局.

问题是,我不知道,如何在我的应用程序中组织事务.Chis Richardson在他的书中指出:

表示层通过直接或间接通过façade调用域模型来处理来自用户浏览器的HTTP请求,正如我在前一章中描述的那样,它是POJO或EJB.

好到目前为止,但InfoQ上的Srini Penchikala 文章指出:

一些开发人员更喜欢在DAO类中管理事务,这是一个糟糕的设计.这导致过于细粒度的事务控制,这不能提供管理事务跨越多个域对象的用例的灵活性.服务类应该处理事务; 这种方式即使事务跨越多个域对象,服务类也可以管理事务,因为在大多数用例中,Service类处理控制流.

好的,所以如果我理解正确的话,存储库类不应该是事务性的,服务层(现在更薄)是事务性的(因为它曾经是在事务脚本模式中).但是如果域对象直接被表示层调用呢?这是否意味着我的域对象应该具有事务行为?以及如何在Spring或EJB环境中实现它?

这对我来说似乎有些奇怪,所以如果有人澄清这一点,我会很高兴.谢谢.

java oop spring design-patterns domain-driven-design

19
推荐指数
2
解决办法
6391
查看次数

Mockito在ScalaTest中的答案

在ScalaTest中有没有替代Mockito的答案?我正在阅读它的文档,但没有找到任何东西.

我想,例如,对存根方法的参数执行一些逻辑.在Mockito,我会做这样的事情:

when(mock.create(any(A.class))).thenAnswer(new Answer() {
    Object answer(InvocationOnMock invocation) {
        A firstArg = (A) invocation.getArguments()[0];
        firstArg.callMethod();
        return null;
    }
});
Run Code Online (Sandbox Code Playgroud)

在ScalaTest中,我也可以使用Mockito.但是,如果有更多的Scala友好语法来定义这样的话会很好Answer.

谢谢.

scala mockito scalatest

7
推荐指数
2
解决办法
4730
查看次数

保护Thrift服务器以防止POODLE SSL漏洞

为了保护我的Thrift服务器免受最近发现的SSLv3漏洞的影响,我明确说明了应该为服务器套接字启用哪些协议:

TServerSocket socket = TSSLTransportFactory.getServerSocket(...);
SSLServerSocket sslServerSocket = (SSLServerSocket) socket.getServerSocket;
sslServerSocket.setEnabledProtocols(new String[] {"TLSv1.1", "TLSv1.2"});
Run Code Online (Sandbox Code Playgroud)

但是,即使使用TestSSLServer的检查仅列出TLSv1.1和TLSv1.2,我仍然可以使用SSLv3连接OpenSSL:

openssl s_client -connect localhost:1111 -ssl3
Run Code Online (Sandbox Code Playgroud)

如何在Thrift上完全禁用SSLv3,因此在SSL握手期间它已经失败了?

java security ssl thrift

6
推荐指数
1
解决办法
709
查看次数

Emacs涉及正斜杠的键绑定

在emacs中,我想\C-/从undo 重新映射到我的函数,注释当前区域或当前行(如果未选择区域)。当我尝试这样的事情:

(global-set-key "\C-/" 'comment-or-uncomment-region-or-line)
Run Code Online (Sandbox Code Playgroud)

我遇到一个错误

error: Invalid modifier in string
Run Code Online (Sandbox Code Playgroud)

我正在尝试使用各种不同的键绑定方法,但是不幸的是没有成功,因此使用谷歌搜索\C-/也不是很有帮助。

谢谢您的帮助。

emacs elisp

4
推荐指数
1
解决办法
967
查看次数

TSLint:未使用的var关键字

我已经为我的TypeScript项目配置了TSLint,我不知道警告forbidden var keyword是什么意思.这是一个最小的示例,它会导致TSLint警告:

var x: number = 1;
Run Code Online (Sandbox Code Playgroud)

谢谢.

编辑:我正在使用示例tslint.json.

typescript tslint

2
推荐指数
1
解决办法
3461
查看次数