小编mik*_*ent的帖子

为什么 "\p{L}" 在这个正则表达式中不起作用?

操作系统:Windows 7。Jython 2.7.0“最终版本”。

for token in sorted_cased.keys():
    freq = sorted_cased[ token ]
    if freq > 1:
        print( 'token |%s| unicode? %s' % ( token, isinstance( token, unicode ), ) )
        if re.search( ur'\p{L}+', token ):
            print( '  # cased token |%s| freq %d' % ( token, freq, ))
Run Code Online (Sandbox Code Playgroud)

sorted_cased是一个显示令牌出现频率的字典。这里我试图筛去话,其与频率发生(仅Unicode字符)> 1.(NB我使用了re.match而不是searchsearch应检测在事件1个这样\ p {L} token

示例输出:

token |Management| unicode? True
token |n| unicode? True
token |identifiés| unicode? True
token |décrites| unicode? True
token |agissant| …
Run Code Online (Sandbox Code Playgroud)

python regex unicode jython

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

AssertJ - 检查类后继续流畅的断言

假设我有一个Map<String, Action>,我会这样:

    assertThat( spyActionMap.get( "a" ) ).isInstanceOf( Action.class );
Run Code Online (Sandbox Code Playgroud)

...通过。现在我想检查获得的Action是否正确:

    assertThat( spyActionMap.get( "a" ) ).isInstanceOf( Action.class ).getValue( Action.NAME ).isEqualTo( "Go crazy" );
Run Code Online (Sandbox Code Playgroud)

...无法编译,这并不奇怪。有什么办法可以做到这种事情吗?

java fluent assertj

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

Groovy Singleton和测试问题(与Spock一起使用)

有商榷这里有关测试和单身......但是这是关于Java模式。

我的问题特别是关于@Singleton实现此模式的Groovy (注释)方式的。

这似乎是Groovy Goodness的另一点。但是,在使用具有此批注的类进行测试(使用Spock)时,我有一个问题。

如果测试(从原始的,只是构建的状态)在任何的这个实例的状态发生变化的,据我的实验表明,那么这将通过进行下一个测试...我测试MySingletonClass.instancehashCode()几个测试和他们都回来了一样。也许这并不奇怪。

但是...如果Spock能够(使用我只能推测的那种超级格罗维魔术)以某种方式重置测试之间的类,那会更好吗?即通过创建新实例?

有一个明显的解决方法:将一个reset方法合并到每个@Singleton类中,在测试期间其状态可能会更改。然后resetsetup()...中调用该方法,实际上我使用了一个公共Specification子类CommonProjectSpec,从中可以得到我所有的Specifications子类...这样就很容易实现。

但这似乎有点不雅。还有其他选择吗?我应该将其作为Spock建议的增强功能提交吗?

PS还可以证明您不能再创建Spy此类(或GroovySpy)。但是您可以使用Mock它:

    ConsoleHandler mockCH = Mock( ConsoleHandler ){
        getDriver() >> ltfm
    }
    GroovyMock( ConsoleHandler, global: true )
    ConsoleHandler.instance = mockCH
Run Code Online (Sandbox Code Playgroud)

...是的,GroovyMock这里的“全局” 实际上具有“驯服”静态instance场的能力,以便它温柔地接受Mock巢中的杜鹃。

testing groovy singleton spock

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

创建一个新的类“动态”?

...特别是在Groovy中(因此标记)?

在Java中,您无法执行此操作...但是在动态语言(例如Python)中,您通常可以执行此操作。

given在Eclipse中尝试执行Spock功能块(即测试方法)中的操作的尝试:

Groovy:此处不期望类定义。请在适当的地方定义课程,或者尝试使用块/关闭。

...一个“合适的”地方显然不在功能范围之内。这将是笨拙而不是笨拙的。在使用Groovy几个月后,我感觉到Groovy应该何时提供groovier。

因此,说我想扩展我的abstractAbstractFoo并创建一个新的子类Foo,在我的功能中,有什么方法可以“使用块/关闭”来实现类似的功能?

groovy closures subclass

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

最新的Groovy稳定版本令人困惑的问题

我刚刚开始了一个新的Gradle项目.在我之前的build.gradles中,我一直在这样做:

compile 'org.codehaus.groovy:groovy-all:2.4.15'
testCompile 'org.spockframework:spock-core:1.1-groovy-2.4'
Run Code Online (Sandbox Code Playgroud)

......还有这些依赖关系:

testCompile 'net.bytebuddy:byte-buddy:1.6.11'
testCompile 'org.objenesis:objenesis:2.6'
Run Code Online (Sandbox Code Playgroud)

通过反复试验的过程,我发现Groovy 2.4.15带有这些Bytebuddy和Objensis依赖项使我能够模拟BufferedReader.这在我想模拟用户输入到控制台的控制台应用程序中证明是有用的.因此,"控制台处理程序"类具有以下字段/属性:

def br = new BufferedReader( new InputStreamReader(System.in, 'UTF-8' ))
Run Code Online (Sandbox Code Playgroud)

在app类中使用如下来获取用户控制台输入:

String response = br.readLine().trim()
Run Code Online (Sandbox Code Playgroud)

...这意味着Spock测试可以做这样的事情:

def 'prompt should show help on entering H'()  {
    given:
    consoleHandler.br = Mock( BufferedReader )
    consoleHandler.br.readLine() >> 'h'
Run Code Online (Sandbox Code Playgroud)

即模拟控制台上字母h的输入.

...但它不适用于Groovy 2.5.3及其匹配的Spock依赖项:对于这个新项目,我把:

compile 'org.codehaus.groovy:groovy-all:2.5.3'
testCompile 'org.spockframework:spock-core:1.2-groovy-2.5'
Run Code Online (Sandbox Code Playgroud)

...具有相同的ByteBuddy和Objenisis依赖项.我得到以下测试失败:

java.lang.IllegalArgumentException异常:无法在net.bytebuddy.TypeCache.findOrInsert(TypeCache.java:140)在net.bytebuddy.TypeCache $ WithInlineExpunction.findOrInsert(TypeCache.java:346)在net.bytebuddy.TypeCache.findOrInsert创建类型(TypeCache.java:161)在net.bytebuddy.TypeCache $ WithInlineExpunction.findOrInsert(TypeCache.java:355)在org.spockframework.mock.runtime.ByteBuddyMockFactory.createMock(ByteBuddyMockFactory.java:41)在org.spockframework.mock. runtime.ProxyBasedMockFactory.create(ProxyBasedMockFactory.java:42)在org.spockframework.mock.runtime.JavaMockFactory.createInternal(JavaMockFactory.java:58)在org.spockframework.mock.runtime.JavaMockFactory.create(JavaMockFactory.java:38)在org.spockframework.mock.runtime.CompositeMockFactory.create(CompositeMockFactory.java:42)在org.spockframework.lang.SpecInternals.createMock(SpecInternals.java:46)在org.spockframework.lang.SpecInternals.createMockImpl(SpecInternals.java :294)在org.spockframework.lang.SpecInternals.creat eMockImpl(SpecInternals.java:284)在org.spockframework.lang.SpecInternals.MockImpl(SpecInternals.java:100)在core.FirstSpec.setup(first_tests.groovy:20)

产生的原因:java.lang.NoSuchMethodError:net.bytebuddy .dynamic.loading.ClassInjector $ UsingLookup.isAvailable()Z org.spockframework.mock.runtime.ByteBuddyMockFactory.determineBestClassLoadingStrategy(ByteBuddyMockFactory.java:103)at org.spockframework.mock.runtime.ByteBuddyMockFactory.access $ 300(ByteBuddyMockFactory.java: 27)在org.spockframework.mock.runtime.ByteBuddyMockFactory $在org.spockframework.mock.runtime.ByteBuddyMockFactory $ 1.call 1.call(ByteBuddyMockFactory.java:54)(ByteBuddyMockFactory.java:43)在net.bytebuddy.TypeCache.findOrInsert (TypeCache.java:138)

任何Groovyüber-geeks在那里?

testing groovy mocking gradle

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

必须在EDT中调用AWT类中的所有方法,即非Swing方法吗?

我最近了解到Sun的/ Oracle最新指南说,任何Swing对象(包括构造函数)的Swing方法都不能在EDT之外调用.

相同的严格标准是否也适用于所有"视觉"AWT课程?如果没有,**对他们来说是什么规则?

后来

re Swing和EDT:2009年的讨论.

http://www.velocityreviews.com/forums/t707173-why-does-jdk-1-6-recommend-creating-swing-components-on-the-edt.html

引用:"除了实际的线程安全性和相关问题,如可见性和同步,我认为是一个软件问题.Swing组件通常具有某种类型的"监听器",并且这些监听器设计为在EDT上执行.

由于这些侦听器是异步的并且响应事件(如属性更改),因此可以在构建GUI时触发这些侦听器.结果是,当您在主线程中构建时,某些侦听器正在EDT上执行,并且一些侦听器也可能在其他线程上运行(因为侦听器混淆并在错误的线程上触发).结果是巨大的不可预测的混乱."

也许他们不知道他们在谈论什么......但目前我采取的是"更安全而不是抱歉"的方法.Potochkin,http: //weblogs.java.net/blog/alexfromsun/archive/2006/02/debugging_swing.html 似乎也认为我们熟悉后来更严格的规则

java swing awt event-dispatch-thread

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

无法让 Gradle 使用 System.in

这个问题解释了如何System.in在运行任务时使用来运行项目中的特定类。

但对我来说,目前它不起作用:尽管我已将application插件和以下几行包含在build.gradle

mainClassName = "misc.StreamsExp"
run{ 
    standardInput = System.in 
}
task stream( type: JavaExec, dependsOn: assemble ){
    classpath sourceSets.main.runtimeClasspath
    main = "misc.StreamsExp"
}
Run Code Online (Sandbox Code Playgroud)

下面的应用程序代码中的行readLine应该是阻塞的,但事实并非如此:

BufferedReader br = new BufferedReader(new InputStreamReader( System.in ));

String enteredLine = "";
while( enteredLine == null || ! enteredLine.equals( "q" )){
    System.out.println( "spuds");
    enteredLine = br.readLine();
}
Run Code Online (Sandbox Code Playgroud)

...相反,事情会永远旋转:

土豆土豆
土豆
土豆
...

注意,我使用的是 Windows 10 操作系统,带有 Java 8.91。我尝试过 Windows DOS 控制台和 Cygwin。
NB2 当我在 Eclipse(Gradle STS Eclipse …

inputstream system.in blocking gradle

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

史波克虫?存根上的 callRealMethod() 不会抛出预期的异常

CUT被测类中摘录:

def compileOutputLines( TopDocs topDocs ) {
    println "gubbins"
}
Run Code Online (Sandbox Code Playgroud)

测试代码:

def "my feature"(){
    given:
    CUT stubCut = Stub( CUT ){
        compileOutputLines(_) >> { TopDocs mockTD -> 
            // NB no Exception is thrown
            // try {
            println "babbles"
            callRealMethod()
            println "bubbles"
            // }catch( Exception e ) {
            //  println "exception $e"
            // }
        }
    }
    CUT spyCut = Spy( CUT ){
        compileOutputLines(_) >> { TopDocs mockTD ->
            println "babbles 2"
            callRealMethod()
            println "bubbles 2"
        }
    }

    when:
    stubCut.compileOutputLines( …
Run Code Online (Sandbox Code Playgroud)

stub spy spock

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

groovy singleton访问重载的构造函数

groovy Singleton(在Groovy 2.6中注意,如果要包含显式构造函数,必须将strict设置为false)

@Singleton( strict = false )
class test {

    private test(){
        //some Method call      
    }

    private test(def x){
        //some Method call
    }
}
Run Code Online (Sandbox Code Playgroud)

test.groovy

def test1 = test.instance
Run Code Online (Sandbox Code Playgroud)

当我发出以下声明时,它适用于我,我可以看到defualt构造函数被调用

如何在使用第二个construcor参数时创建instanace

如果我发出

def test2 = test("anish").instance 
Run Code Online (Sandbox Code Playgroud)

它抛出我的错误如何解决这个任何建议

groovy.lang.MissingMethodException: No signature of method: test.test() is applicable for argument types: (java.lang.String) values: [anish]
    at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.unwrap(ScriptBytecodeAdapter.java:54)
    at org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.callCurrent(PogoMetaClassSite.java:78)
    at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent(CallSiteArray.java:44)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:143)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:151)
Run Code Online (Sandbox Code Playgroud)

groovy

0
推荐指数
1
解决办法
1586
查看次数

检查列表是否仅包含给定"允许"列表中的元素

我有一半期待被"欺骗".但在SO,甚至其他语言中似乎没有这样的Pythonic"大脑练习".

说我有一个"允许的"列表[ 45, 6, 155, 44 ],我提交了一个列表[ 6, 44, 19, 12 ]:我只想知道一个有效,优雅和完美的算法来获得结果:

LEGAL: [ 6, 44 ]
ILLEGAL: [ 19, 12 ]
Run Code Online (Sandbox Code Playgroud)

PS目前使用2.7但3.x答案也欢迎!

python list

0
推荐指数
1
解决办法
452
查看次数