我试图测试我的SpringBoot Repository是否可以将新用户添加到数据库中,并且在Junit测试期间我得到了一个NullPointer异常。下面是代码。
使用者:
package org.example;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import org.springframework.boot.SpringBootConfiguration;
import javax.persistence.*;
import java.util.ArrayList;
import java.util.List;
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@Entity
@Table(name="users")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(nullable=false, unique=true)
private int creditCardNumber;
@Column(nullable=false, unique=true)
private String email;
@Column(nullable=false)
private String password;
}
字符串
UserRepository:
package org.example;
import org.example.User;
import org.springframework.boot.SpringBootConfiguration;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
@Repository
public interface UserRepository extends JpaRepository<User, Long>{
}
型
用户服务:
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.SpringBootConfiguration;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.stereotype.Service;
@SpringBootApplication
@Service
public class UserService {
@Autowired
private UserRepository userRepository;
public User createUser(Long id, int credit_card_number, String email, String password) {
User user = new User(id,credit_card_number,email, password);
return userRepository.save(user);
}
}
型
UserTest:
package org.example;
import static org.junit.Assert.assertEquals;
import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
@SpringBootTest
public class UserTest {
@Autowired
private UserService userService;
@Test
public void testCreateUser() {
User newUser = userService.createUser(Integer.toUnsignedLong(23), 203952, "[email protected]", "siofd");
assertEquals(newUser.getEmail(), "[email protected]");
}
}
型
我的测试是在测试UserService时抛出空指针异常,因为我认为在UserService中,UserRepository是空的。
我添加了仓库注解到UserRepository。我尝试添加@SpringBootApplication。你能帮我解释一下为什么吗?
2条答案
按热度按时间n8ghc7c11#
1.您不应该将**@SpringBootApplication放在UserService类上。此annotation应仅在您的主应用程序类上。
1.在测试类上使用@ExtendWith(SpringExtension.class)用于junit 5,@RunWith(SpringRunner.class)**用于junit 4。
1.对我来说,你的测试应该是这样的:
字符串
ufj5ltwl2#
修复UserService
首先,请从
UserService
服务中删除@SpringBootApplication
注解。创建SpringBootApplication注解类
接下来,请使用
main
方法作为入口点创建一个类,并使用@SpringBootApplication
注解它。示例:字符串
SpringBootApplication
类的名称。JUnit5样本测试
对于
UserService
,使用JUnit 5进行最低工作集成测试:型
根据您的
pom.xml
,您可能需要添加Maven Failsafe Plugin定义来自动运行调用mvn
的集成测试:型
关于
mvn verify
:型