Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么我的删除测试方法找不到id为7的用户?_Java_Unit Testing_Mockito - Fatal编程技术网

Java 为什么我的删除测试方法找不到id为7的用户?

Java 为什么我的删除测试方法找不到id为7的用户?,java,unit-testing,mockito,Java,Unit Testing,Mockito,我正在开发一个应用程序,我必须为我的代码编写测试。我正在为我的UserService类编写一个测试。这是我的UserService类: private static final Logger LOG = LoggerFactory.getLogger("userLogger"); @EJB UserDAO userDAO; @Override public List<User> list() { LOG.info("Get all

我正在开发一个应用程序,我必须为我的代码编写测试。我正在为我的UserService类编写一个测试。这是我的UserService类:

 private static final Logger LOG = LoggerFactory.getLogger("userLogger");

    @EJB
    UserDAO userDAO;

    @Override
    public List<User> list() {
        LOG.info("Get all users!");
        return Optional.ofNullable(userDAO.findAll())
                .orElse(Collections.emptyList()).stream().map(u -> u.toUser())
                .collect(Collectors.toList());
    }

    @Override
    public User findById(long id) {
        UserEntity userEntity = userDAO.find((id));
        if (userEntity == null) {
            throw new UserNotFoundException(id);
        }
        LOG.info("User founded with id {}", id);
        return userEntity.toUser();
    }

    @Override
    public User create(User user) {
        if (user == null) {
            throw new ServiceException("Invalid request!");
        }
        UserEntity exists = userDAO.find(user.getId());
        if (exists != null) {
            throw new UserAlreadyExistsException(user.getId());
        }
        UserEntity userEntity = new UserEntity(user);

        userDAO.create(userEntity);
        LOG.info("Created user with id {}. Username is {}. Name is {}. Surname is {}. Email is {}.",
                userEntity.getUserId(), userEntity.getUsername(), userEntity.getName(),
                userEntity.getSurname(), userEntity.getEmail());
        return userEntity.toUser();
    }

    @Override
    public User update(long id, User user) {
        if (user == null) {
            throw new ServiceException("Invalid request!");
        }
        UserEntity userEntity = userDAO.find((id));
        if (userEntity == null) {
            throw new UserNotFoundException(id);
        }
        userEntity.update(user);
        userDAO.update(userEntity);
        return userEntity.toUser();
    }

    @Override
    public void delete(long id) {
        UserEntity userEntity = userDAO.find(id);
        if (userEntity == null) {
            throw new UserNotFoundException(id);
        }
        userDAO.delete(userEntity);
        LOG.info("Deleted user with id {}", userEntity.getUserId());
    }

}
当我运行此测试时,出现以下错误:

[TestNG] Running:
  C:\Users\pgoran\AppData\Local\Temp\testng-eclipse--1992695267\testng-customsuite.xml

[main] INFO userLogger - Created user with id 7. Username is DDD. Name is SAAsd. Surname is SDSDS. Email is qwqwqw@gmail.com.
[main] INFO userLogger - Created user with id 7. Username is DDD. Name is SAAsd. Surname is SDSDS. Email is qwqwqw@gmail.com.
[main] INFO userLogger - Created user with id 7. Username is DDD. Name is SAAsd. Surname is SDSDS. Email is qwqwqw@gmail.com.
PASSED: testCreateUser
PASSED: testWhenUserExist
PASSED: testWhenUserNotExist
FAILED: testDeleteUser
com.comtrade.trips.service.user.exception.UserNotFoundException: user-service: User with id: 7 was not found!
    at com.comtrade.trips.service.user.UserService.findById(UserService.java:45)
    at com.comtrade.trips.service.user.UserServiceImplementationTest.testDeleteUser(UserServiceImplementationTest.java:99)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:104)
    at org.testng.internal.Invoker.invokeMethod(Invoker.java:645)
    at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:851)
    at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1177)
    at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:129)
    at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:112)
    at org.testng.TestRunner.privateRun(TestRunner.java:756)
    at org.testng.TestRunner.run(TestRunner.java:610)
    at org.testng.SuiteRunner.runTest(SuiteRunner.java:387)
    at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:382)
    at org.testng.SuiteRunner.privateRun(SuiteRunner.java:340)
    at org.testng.SuiteRunner.run(SuiteRunner.java:289)
    at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
    at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:86)
    at org.testng.TestNG.runSuitesSequentially(TestNG.java:1293)
    at org.testng.TestNG.runSuitesLocally(TestNG.java:1218)
    at org.testng.TestNG.runSuites(TestNG.java:1133)
    at org.testng.TestNG.run(TestNG.java:1104)
    at org.testng.remote.AbstractRemoteTestNG.run(AbstractRemoteTestNG.java:132)
    at org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:236)
    at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:81)


===============================================
    Default test
    Tests run: 4, Failures: 1, Skips: 0
===============================================


===============================================
Default suite
Total tests run: 4, Failures: 1, Skips: 0
===============================================

[TestNG] Time taken by org.testng.reporters.JUnitReportReporter@7fc229ab: 18 ms
[TestNG] Time taken by [FailedReporter passed=0 failed=0 skipped=0]: 17 ms
[TestNG] Time taken by org.testng.reporters.jq.Main@27ae2fd0: 68 ms
[TestNG] Time taken by org.testng.reporters.XMLReporter@15b204a1: 11 ms
[TestNG] Time taken by org.testng.reporters.EmailableReporter2@56a6d5a6: 9 ms
[TestNG] Time taken by org.testng.reporters.SuiteHTMLReporter@45b9a632: 33 ms
我发现我的错误是找不到id=7的用户,但我不知道在删除方法的上面一行中如何创建id为7的用户。 问题是,如何修复此错误

您的
userDAO
是一个模拟,它没有配置为返回ID为7的内容,因此它返回一个
null

到测试的
//给定的
部分

您的
userDAO
是一个模拟,它没有配置为返回ID为7的内容,因此它返回一个
null

到测试的
//给定的
部分

[TestNG] Running:
  C:\Users\pgoran\AppData\Local\Temp\testng-eclipse--1992695267\testng-customsuite.xml

[main] INFO userLogger - Created user with id 7. Username is DDD. Name is SAAsd. Surname is SDSDS. Email is qwqwqw@gmail.com.
[main] INFO userLogger - Created user with id 7. Username is DDD. Name is SAAsd. Surname is SDSDS. Email is qwqwqw@gmail.com.
[main] INFO userLogger - Created user with id 7. Username is DDD. Name is SAAsd. Surname is SDSDS. Email is qwqwqw@gmail.com.
PASSED: testCreateUser
PASSED: testWhenUserExist
PASSED: testWhenUserNotExist
FAILED: testDeleteUser
com.comtrade.trips.service.user.exception.UserNotFoundException: user-service: User with id: 7 was not found!
    at com.comtrade.trips.service.user.UserService.findById(UserService.java:45)
    at com.comtrade.trips.service.user.UserServiceImplementationTest.testDeleteUser(UserServiceImplementationTest.java:99)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:104)
    at org.testng.internal.Invoker.invokeMethod(Invoker.java:645)
    at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:851)
    at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1177)
    at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:129)
    at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:112)
    at org.testng.TestRunner.privateRun(TestRunner.java:756)
    at org.testng.TestRunner.run(TestRunner.java:610)
    at org.testng.SuiteRunner.runTest(SuiteRunner.java:387)
    at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:382)
    at org.testng.SuiteRunner.privateRun(SuiteRunner.java:340)
    at org.testng.SuiteRunner.run(SuiteRunner.java:289)
    at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
    at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:86)
    at org.testng.TestNG.runSuitesSequentially(TestNG.java:1293)
    at org.testng.TestNG.runSuitesLocally(TestNG.java:1218)
    at org.testng.TestNG.runSuites(TestNG.java:1133)
    at org.testng.TestNG.run(TestNG.java:1104)
    at org.testng.remote.AbstractRemoteTestNG.run(AbstractRemoteTestNG.java:132)
    at org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:236)
    at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:81)


===============================================
    Default test
    Tests run: 4, Failures: 1, Skips: 0
===============================================


===============================================
Default suite
Total tests run: 4, Failures: 1, Skips: 0
===============================================

[TestNG] Time taken by org.testng.reporters.JUnitReportReporter@7fc229ab: 18 ms
[TestNG] Time taken by [FailedReporter passed=0 failed=0 skipped=0]: 17 ms
[TestNG] Time taken by org.testng.reporters.jq.Main@27ae2fd0: 68 ms
[TestNG] Time taken by org.testng.reporters.XMLReporter@15b204a1: 11 ms
[TestNG] Time taken by org.testng.reporters.EmailableReporter2@56a6d5a6: 9 ms
[TestNG] Time taken by org.testng.reporters.SuiteHTMLReporter@45b9a632: 33 ms
public void delete(long id) {
    UserEntity userEntity = userDAO.find(id);
willReturn(userEntity).given(userDAO).find(7L);