我有一个java应用程序,用于ProcessBuilder准备操作系统命令并给我一个Process对象.(实际的os命令是使用cygwin通过ssh进行rsync).
这在Windows中运行良好,但如果我想停止使用process.destroy()它的过程不会杀死子ssh和rsync进程.....我必须使用Windows任务管理器手动杀死它们..
我可以OutputStream在调用之前获取进程并以某种方式发送一个ctrl-c destroy();吗?
如果有人对解决方法有任何想法,那就太好了.感谢:D
只是想知道在为grails应用程序添加配置键值对时的"最佳实践"是什么.
您是否应该添加到Config.groovy或创建新文件.
我尝试创建一个新的配置文件(Company.groovy),但无法从我的应用程序访问配置道具.然而,当我将属性粘贴到Config.groovy时,我确实可以访问它们....这样可以正常工作,但我不希望Config.groovy变得太大.另一个问题抬头了.在运行Integration测试时,我发现'test'env无法访问我的新配置属性(值为null).
我必须做一些根本错误的事情.任何意见,将不胜感激.
感谢:D
有人在grails单元测试中使用过这个注释吗?似乎没有为我工作.谢谢.d
更新:我下面测试的最后一行确实抛出了预期的异常.但是测试失败了(这里的堆栈跟踪太大......).我正在使用grails 1.2并在eclipse的junit runner中运行测试.也许grails使用的是早期版本的junit而不是4?
/**
* Get the EC by a manager of a different company. Should throw exception
*/
@ExpectedException(ServiceAuthorizationException.class)
void testGetEcByNonOwnerManagerOfDifferentCompany() {
mockDomain(ExpenseClaim , [new ExpenseClaim(id:"1",narrative:"marksClaim", employee:userMark, company:dereksCompany)])
def authControl = mockFor(AuthenticateService)
authControl.demand.userDomain(1..1) {-> otherUserMgr }
authControl.demand.ifAllGranted(1..1) {String arg1 -> return "ROLE_COMPANYMANAGER".equals(arg1) } //returns true
def testService = new ExpenseClaimService()
testService.authenticateService = authControl.createMock()
def thrown = false
testService.getExpenseClaim("1")
}
Run Code Online (Sandbox Code Playgroud)