小编Jog*_*ogi的帖子

Jerseys新LoggingFeature中的日志级别

我想用Jersey 2.23登录.从这个版本开始,该类LoggingFilter已被弃用,例如可以在这里阅读:https://jersey.java.net/documentation/latest/logging_chapter.html.所以我必须LoggingFeature改用.什么都没有工作,是register方法ResourceConfig,因为它是这个文档中解释.但最终property方法有效:

client.property(LoggingFeature.LOGGING_FEATURE_LOGGER_LEVEL_SERVER, "WARN");
Run Code Online (Sandbox Code Playgroud)

这会将每条消息打印为警告.不幸的是,它被记录在哪里(至少我找不到任何东西)允许哪些值.显然它必须是一个String,因为我得到一条日志消息,当我尝试除String之外的任何东西时,无法将值转换为String.现在我想用级别TRACE记录这些消息,我找不到适合的字符串来实现这一点.例如,"TRACE"和"FINE"不起作用,在这些情况下没有记录任何内容.我必须提到我将Log4j2与Slf4jBridgeHandler一起使用,因为Jersey使用JUL.

java jersey

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

使用PowerMockito模拟java.lang.Runtime

想为像这样的方法编写单元测试

public static void startProgram() {
    process = Runtime.getRuntime().exec(command, null, file);
}
Run Code Online (Sandbox Code Playgroud)

我不想因为某些原因注入运行时对象,所以我想将getRuntime方法存根,它返回一个Runtime mock ...我试过这样:

@RunWith(PowerMockRunner.class)
@PrepareForTest(Runtime.class)
public class ProgramTest {

    @Test
    public void testStartProgram() {
        Runtime mockedRuntime = PowerMockito.mock(Runtime.class);

        PowerMockito.mockStatic(Runtime.class);
        Mockito.when(Runtime.getRuntime()).thenReturn(mockedRuntime);

        ... //test
    }
}
Run Code Online (Sandbox Code Playgroud)

但这不起作用.实际上似乎没有任何东西被嘲笑.在测试中,使用正常的Runtime对象.

任何人都知道为什么这不起作用和/或它是如何工作的?

由于这个小例子似乎没有重现问题,这里是完整的测试代码:测试方法(缩短)

public static synchronized long startProgram(String workspace) {
    // Here happens someting with Settings which is mocked properly
    File file = new File(workspace);
    try {
        process = Runtime.getRuntime().exec(command, null, file);
    } catch (IOException e) {
        throw e;
    }
    return 0L;
}
Run Code Online (Sandbox Code Playgroud)

和测试: …

java junit mockito powermock

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

Criteria API:按类类型过滤

我是关系数据库的新手,我在创建查询方面遇到了一些问题。首先,我想简短地解释一下情况。我有几个实体类。所有这些都扩展AbstractEntityEntityProperty。所以实体可以有属性,属性也有拥有实体,所以存在双向关系。
现在让我们说ConcreteEntity扩展AbstractEntity,我想创建这样的查询:获取所有类型的实体,这些实体ConcreteEntity至少具有一个名称包含在给定列表中的属性propertyNames。到目前为止,我有以下工作条件查询:

CriteriaQuery<AbstractEntity> cq = cb.createQuery(AbstractEntity.class);
Root<EntityProperty> property = cq.from(EntityProperty.class);
Join<EntityProperty, AbstractEntity> entity = property.join(EntityProperty_.owningEntities);
cq.where(property.get(EntityProperty_.name).in((Object[]) propertyNames));
cq.select(entity);
Run Code Online (Sandbox Code Playgroud)

但现在我只想要那些类型为 的实体ConcreteEntity。我怎么能做到这一点?在 JPQL 中,我写了“SELECT entity FROM EntityProperty property JOIN property.owningEntities entity”,在这里我也不知道如何以仅返回特定类型的方式编写它...

感谢您提前回答!

编辑:将第二个问题移至标准查询:模糊结果列表并删除了代码中的不同(不起作用)

java sql jpql criteria-api jpa-2.0

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

标签 统计

java ×3

criteria-api ×1

jersey ×1

jpa-2.0 ×1

jpql ×1

junit ×1

mockito ×1

powermock ×1

sql ×1