小编use*_*ser的帖子

无法导入SpringApplicationContextLoader

我使用IntelliJ IDEA编写Spring项目.

我添加了依赖

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
Run Code Online (Sandbox Code Playgroud)

和Spring Boot有关.我无法使用以下方法导入SpringApplicationContextLoader:

import org.springframework.boot.test.SpringApplicationContextLoader

但是我在GitHub上看到很多使用这个类的项目.

我该如何查看该课程的当前包裹?

java spring intellij-idea maven

3
推荐指数
2
解决办法
5627
查看次数

无法加载 TestContextBootstrapper [null]

我试图测试我的课程:

@Configuration
public class PluginConfig {
   @Bean
   public Supplier messageSupplier(){
      return () -> "plugin";
   }


@Repository
public interface CountryRepository extends JpaRepository<CountryEntity, Long> {}
Run Code Online (Sandbox Code Playgroud)

我的测试:

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfigurationde
public class PluginConfigTest {

@Autowired
private CountryRepository repository;

@Test
public void nullable() {
    assertNotNull(repository);
}
Run Code Online (Sandbox Code Playgroud)

我有一个例外:

java.lang.IllegalStateException: 无法加载 TestContextBootstrapper [null]。指定 @BootstrapWith 的 'value' 属性或使默认引导程序类可用。

at org.springframework.test.context.BootstrapUtils.resolveTestContextBootstrapper(BootstrapUtils.java:143)
at org.springframework.test.context.TestContextManager.<init>(TestContextManager.java:105)
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.createTestContextManager(SpringJUnit4ClassRunner.java:152)
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.<init>(SpringJUnit4ClassRunner.java:143)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at org.junit.internal.builders.AnnotatedBuilder.buildRunner(AnnotatedBuilder.java:104)
at org.junit.internal.builders.AnnotatedBuilder.runnerForClass(AnnotatedBuilder.java:86)
at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:59)
at org.junit.internal.builders.AllDefaultPossibilitiesBuilder.runnerForClass(AllDefaultPossibilitiesBuilder.java:26)
at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:59)
at org.junit.internal.requests.ClassRequest.getRunner(ClassRequest.java:33)
at …
Run Code Online (Sandbox Code Playgroud)

java testing spring

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

Prolog - 计算数字的出现次数

我想写谓词,它可以计算所有遇到的数字:

count(1, [1,0,0,1,0], X).
X = 2.
Run Code Online (Sandbox Code Playgroud)

我试着把它写成:

count(_, [], 0).
count(Num, [H|T], X) :- count(Num, T, X1), Num = H, X is X1 + 1.
Run Code Online (Sandbox Code Playgroud)

为什么不工作呢?

prolog

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

模拟删除方法

我想通过验证实现删除方法并测试它:

    @Override
    public boolean delete(Long id) {
        final Entity byId = repository.findById(id);
        if (byId != null) {
            repository.delete(byId);
        }
        final Entity removed = repository.findById(id);
        if (removed != null) {
            return false;
        }
        return true;
    }

    @Test
    public void deleteTest() throws Exception {
        // given
        final Entity entity = new Entity(1L);

        Mockito.when(repository.findById(1L))
                .thenReturn(entity);

        // when
        final boolean result = service.delete(1L);

        // then
        Mockito.verify(repository, times(1))
                .delete(entity);
        assertThat(result, equalTo(true));
    }
Run Code Online (Sandbox Code Playgroud)

但现在 Mockito 正在模拟服务中“删除”的对象,并且方法返回 false。我该如何测试它?

java unit-testing mocking mockito

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

无法调整 VirtualBox 显示大小

我在 VirtualBox 上使用 Ubuntu,但我安装了 Xubuntu 桌面,现在虚拟机的显示比我的显示器小,我无法调整它的大小。在此输入图像描述

如何扩展呢?

ubuntu virtualbox virtual-machine

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

Spring - 使用 TransactionSynchronizationManager 的测试方法

我在我的服务中使用TransactionSynchronizationManager.registerSynchronization(...),但无法为此方法编写测试,因为我收到异常:java.lang.IllegalStateException: Transaction synchronization is not active

我的服务的实施:

@Transactional
public void save(Order order) {
    log.info("Starting transaction...");
    orderDAO.save(order);
    TransactionSynchronizationManager.registerSynchronization(
            new TransactionSynchronizationAdapter() {
                @Override
                public void afterCommit() {
                    log.info("#afterCommit");
                    eventPublisher.publishEvent(new OrderPlacedEvent(order));
                }
            }
    );
    log.info("Commit");
}
Run Code Online (Sandbox Code Playgroud)

并测试哪个不起作用:

@RunWith(SpringRunner.class)
public class OrderServiceTest {

    private OrderDAO orderDAO;
    private ApplicationEventPublisher eventPublisher;
    private OrderService orderService;

    @Before
    public void setUp() throws Exception {
        orderDAO = mock(OrderDAO.class);
        eventPublisher = mock(ApplicationEventPublisher.class);
        orderService = new OrderService(
                orderDAO,
                eventPublisher
        );
    }

    @Test
    public void save() throws Exception { …
Run Code Online (Sandbox Code Playgroud)

java spring spring-transactions

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

Spring 规范 - 谓词的结合

我需要一个函数来过滤参数和构建查询。我有 4 个参数,因此如果我尝试为每个条件实现查询,我将不得不编写 16 个(2^4)实现 - 这不是一个好主意。

我尝试使用SpecificationSpring Data JPA 的接口改进我的代码,但我无法创建谓词的连接。

Specification接口的实现:

public class UserSpecification implements Specification<User> {

    private final UserSearchCriteria criteria;

    public UserSpecification(UserSearchCriteria criteria) {
        this.criteria = criteria;
    }

    @Override
    public Predicate toPredicate(Root<User> root, CriteriaQuery<?> query, CriteriaBuilder builder) {
        final List<Predicate> predicates = new ArrayList<>();
        if (criteria.getName() != null) {
            final Predicate name = builder.equal(root.<String>get("name"), criteria.getName());
            predicates.add(name);
        } else if (criteria.getSurname() != null) {
            final Predicate surname = builder.equal(root.<String>get("surname"), criteria.getSurname());
            predicates.add(surname);
        } else if …
Run Code Online (Sandbox Code Playgroud)

spring jpa criteria spring-data spring-data-jpa

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

React/enzyme - 如何测试参考函数

我有一个包含已将函数分配给 ref 的输入的组件,我尝试为其编写测试:

 <input
   id="input-element"
   type="checkbox"
   checked={isChecked}
   ref={(input) => {
       if (input) {
           input.indeterminate = true;
       }
   }}
   className="checkbox" />
Run Code Online (Sandbox Code Playgroud)

我的问题是如果输入不确定设置为 true,如何检查测试。文档https://airbnb.io/enzyme/docs/api/ReactWrapper/ref.html对我没有帮助,因为只有非常简单且无用的示例。

我试着测试一下:

const wrapper = shallow(<MyComponent {...props}/>);
expect(wrapper.find('#input-element').prop('indeterminate')).toBeTruthy();
Run Code Online (Sandbox Code Playgroud)

wrapper.find('#input-element').prop('indeterminate')归还我undefined

javascript reactjs enzyme

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

Prolog - 生成斐波那契数列

我想编写为给定 N 生成斐波那契数列的谓词。

fibon(6, X) -> X = [0,1,1,2,3,5].
Run Code Online (Sandbox Code Playgroud)

我有一个谓词来生成斐波那契数列的第 N 个元素:

fib(0, 0).
fib(1, 1).
fib(N, F) :-
    N > 1,
    N1 is N - 1,
    N2 is N - 2,
    fib(N1, F1),
    fib(N2, F2),
    F is F1 + F2.
Run Code Online (Sandbox Code Playgroud)

我尝试编写 fibon/2,但它不起作用:

fibon(N, [H|T]) :-
    fib(N, H),
    N1 is N - 1,
    fibon(N1, T).
Run Code Online (Sandbox Code Playgroud)

我像下面这样解决了它:

at_the_end(X, [], [X]).
at_the_end(X, [H|T], [H|T2]) :-
    at_the_end(X, T, T2).

revert([], []).
revert([H|T], Out) :-
    revert(T, Out1),
    at_the_end(H, Out1, Out).

fib(0, 0).
fib(1, 1). …
Run Code Online (Sandbox Code Playgroud)

prolog fibonacci

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

Oracle 12c - 列检查约束不能引用其他列

我必须修改我的表格,并尝试按以下方式进行:

ALTER TABLE projects
    MODIFY (
        id_proj NUMBER(4) CONSTRAINT pk_proj PRIMARY KEY,
        desc VARCHAR2(40) NOT NULL CONSTRAINT uk_proj UNIQUE,
        end_date CONSTRAINT chk_date CHECK(end_date > start_date),
        fund CHECK (fund > 0)
    );
Run Code Online (Sandbox Code Playgroud)

当我尝试执行此查询时,出现错误:

ORA-02438:列检查约束不能引用其他列
02438。00000 - “列检查约束不能引用其他列”
*原因:试图定义引用另一列的列检查约束。
*Action:将其定义为表检查约束。

此外,我希望该列接受大于 0 或 NULL 值的值。

sql oracle oracle12c

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

角度材质 - 改变md-radio-button的颜色

如何在Angular Material2中更改单选按钮的默认颜色?我读了几个关于这个主题的问题,但没有一个能解决这个问题.如何为具有类的元素设置绿色,黄色和红色md-radio-button

css material-design angular-material2 angular

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

MongoDB - 从avg聚合的结果中获取最大值

我收集了产品,这些产品都有评估.我需要选择具有最高评估平均值的产品.问题是我可以按平均分组产品但我无法按平均分组并选择平均值最高的产品.

要重现我的问题,请按照下列步骤操作:

插入产品:

db.products.insert([
{
    name: "Product1",
    price: 1000,
    features: {
        feature1: 0.8,
        feature2: 23
    },
    tags: ["tag1", "tag2", "tag3", "tag4"],
    assessments: [
        {name: "John", assessment: 3},
        {name: "Anna", assessment: 4},
        {name: "Kyle", assessment: 3.6}
    ] 
},
{
    name: "Product2",
    price: 1200,
    features: {
        feature1: 4,
        feature2: 4000,
        feature3: "SDS"
    },
    tags: ["tag1"],
    assessments: [ 
        {name: "John", assessment: 5},
        {name: "Richard", assessment: 4.8}
    ]
},
{
    name: "Product3",
    price: 450,
    features: {
        feature1: 1.3,
        feature2: 60
    },
    tags: ["tag1", "tag2"], …
Run Code Online (Sandbox Code Playgroud)

mongodb aggregation-framework

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

Python - 从字典对象中删除键和值之间的空格

我编写了从文件中读取 JSON 的 python 脚本,对其进行转换,最后将修改后的 JSON 写入文件。我读取的 JSON 没有白色字符,因为我需要最小的大小。

问题是当我从文件中读取 JSON 并调用json.loads(json_content)我获取dictionary对象时,python 在键和值之间添加了空格。

文件中的 JSON:

{"metadata":{"info":"important info"},"timestamp":"2018-04-06T12:19:38.611Z","content":{"id":"1","name":"name test","objects":[{"id":"1","url":"http://example.com","properties":[{"id":"1","value":"1"}]}]}}

我的脚本:

def get_contents_from_json(file_path):
    with open(file_path) as file:
        contents = file.read()
        print(contents)
        print(type(contents))
        print(sys.getsizeof(contents))
        print(len(contents))
        return json.loads(contents)


if __name__ == '__main__':
    data = get_contents_from_json(STACK_JSON)
    print(data)
    print(type(data))
    print(sys.getsizeof(data))

    string_data = json.dumps(data)
    print(string_data)
    print(type(string_data))
    print(sys.getsizeof(string_data))
    print(len(string_data))

    trimmed = string_data.replace(" ", "")
    print(contents)
    print(type(trimmed))
    print(sys.getsizeof(trimmed))
    print(len(trimmed))
Run Code Online (Sandbox Code Playgroud)

这段代码的输出是:

{"metadata":{"info":"important info"},"timestamp":"2018-04-06T12:19:38.611Z","content":{"id":"1","name":"name test","objects":[{"id":"1","url":"http://example.com","properties":[{"id":"1","value":"1"}]}]}}

<class 'str'>
255
206
{'metadata': {'info': 'important info'}, 'timestamp': '2018-04-06T12:19:38.611Z', 'content': {'id': …
Run Code Online (Sandbox Code Playgroud)

python json dictionary

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