小编4th*_*eam的帖子

Couchbase 在 N1QL 参数化查询中使用了错误的索引

我对 couchbase 查询计划的工作方式理解有问题。我将 SpringData 与 Couchbase 4.1 结合使用,并提供 Couchbase 存储库的自定义实现。在我的 Couchbase 存储库的自定义实现中,我有以下方法:

String queryAsString = "SELECT MyDatabase.*, META().id as _ID, META().cas as _CAS FROM MyDatabase WHERE segmentId = $id AND _class = $class ORDER BY executionTime DESC LIMIT 1";
JsonObject params = JsonObject.create()
        .put(CLASS_VARIABLE, MyClass.class.getCanonicalName())
        .put(ID_VARIABLE, segmentId);

N1qlQuery query = N1qlQuery.parameterized(queryAsString, params);
List<MyClass> resultList = couchbaseTemplate.findByN1QL(query, SegmentMembers.class);
return resultList.isEmpty() ? null : resultList.get(0);
Run Code Online (Sandbox Code Playgroud)

结果,Spring Data 生成以下 json 对象,表示对 Couchbase 的查询:

{
    "$class":"path/MyClass",
    "statement":"SELECT MyDatabase.*, META().id as _ID, META().cas as _CAS …
Run Code Online (Sandbox Code Playgroud)

java couchbase spring-data spring-data-couchbase couchbase-java-api

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

抛出PowerMockRule ClassNotFoundException

我有PowerMock和Mockito兼容性的问题.

我有测试班:

@ActiveProfiles("test")
@PrepareForTest(LanguageUtils.class)
public class MyControllerTest {

    @Mock
    private MyMockClass MyMockClass;    
    @Autowired
    private MyController myController;

    @Rule
    public PowerMockRule rule = new PowerMockRule();
}
Run Code Online (Sandbox Code Playgroud)

我的POM看起来像:

    <junit-version>4.12</junit-version>
    <hamcrest-version>1.3</hamcrest-version>
    <mockito-version>1.10.19</mockito-version>      
    <powermock-version>1.6.4</powermock-version>

    <dependency>
        <groupId>org.hamcrest</groupId>
        <artifactId>hamcrest-all</artifactId>
        <version>${hamcrest-version}</version>
        <scope>test</scope>
    </dependency>

    <dependency>
        <groupId>org.mockito</groupId>
        <artifactId>mockito-core</artifactId>
        <version>${mockito-version}</version>
        <exclusions>
            <exclusion>
                <artifactId>hamcrest-core</artifactId>
                <groupId>org.hamcrest</groupId>
            </exclusion>
        </exclusions>
        <scope>test</scope>
    </dependency>

    <dependency>
        <groupId>org.powermock</groupId>
        <artifactId>powermock-api-mockito</artifactId>
        <version>${powermock-version}</version>
        <scope>test</scope>
    </dependency>

    <dependency>
        <groupId>org.powermock</groupId>
        <artifactId>powermock-module-junit4</artifactId>
        <version>${powermock-version}</version>
        <scope>test</scope>
    </dependency>

    <dependency>
        <groupId>org.powermock</groupId>
        <artifactId>powermock-module-junit4-rule</artifactId>
        <version>${powermock-version}</version>
        <scope>test</scope>
    </dependency>
Run Code Online (Sandbox Code Playgroud)

当我尝试运行测试时,我得到了ClassNotFoundException.错误导致PowerMockRule,因为当我删除此行时错误消失.

完整的堆栈跟踪看起来像:

java.lang.RuntimeException: java.lang.ClassNotFoundException: org.powermock.classloading.DeepCloner
    at org.powermock.api.support.ClassLoaderUtil.loadClass(ClassLoaderUtil.java:68)
at org.powermock.api.support.ClassLoaderUtil.loadClass(ClassLoaderUtil.java:34)
at org.powermock.classloading.ClassloaderExecutor.createDeepCloner(ClassloaderExecutor.java:106)
at org.powermock.classloading.ClassloaderExecutor.execute(ClassloaderExecutor.java:88)
at org.powermock.classloading.ClassloaderExecutor.execute(ClassloaderExecutor.java:78) …
Run Code Online (Sandbox Code Playgroud)

java mockito powermock classnotfoundexception

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