我使用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上看到很多使用这个类的项目.
我该如何查看该课程的当前包裹?
我试图测试我的课程:
@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) 我想写谓词,它可以计算所有遇到的数字:
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)
为什么不工作呢?
我想通过验证实现删除方法并测试它:
@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。我该如何测试它?
我在我的服务中使用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) 我需要一个函数来过滤参数和构建查询。我有 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) 我有一个包含已将函数分配给 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
我想编写为给定 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) 我必须修改我的表格,并尝试按以下方式进行:
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 值的值。
如何在Angular Material2中更改单选按钮的默认颜色?我读了几个关于这个主题的问题,但没有一个能解决这个问题.如何为具有类的元素设置绿色,黄色和红色md-radio-button?
我收集了产品,这些产品都有评估.我需要选择具有最高评估平均值的产品.问题是我可以按平均分组产品但我无法按平均分组并选择平均值最高的产品.
要重现我的问题,请按照下列步骤操作:
插入产品:
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) 我编写了从文件中读取 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)