首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么我的方法可以在API中工作,而不能在测试类中工作?

为什么我的方法可以在API中工作,而不能在测试类中工作?
EN

Stack Overflow用户
提问于 2021-04-06 22:05:53
回答 1查看 35关注 0票数 0

我在对功能进行单元测试时遇到了问题。

代码语言:javascript
复制
public User[] fetchUserByStarsAscendingOrder(String username) throws IOException {
    User[] user = fetchUser(username);
    Arrays.sort(user,Collections.reverseOrder());
    return user;
}   

public User[] fetchUser(String username) throws IOException {
    URL url = new URL("https://api.github.com/users/" + username + "/repos");
    InputStreamReader reader = new InputStreamReader(url.openStream());

    User[] user = new Gson().fromJson(reader, User[].class);

    if (user == null) {
        logger.error("No input provided.");
        return null;
    } else {
        logger.info("The output returned.");
        return user;
    }
}

上面的方法在我的API中运行得很好,没有任何问题。

但是当我尝试在我的测试类中使用它时,使用相同的参数...它突然返回null:

代码语言:javascript
复制
class UserServiceTest {
        UserService userService;
        User aUser;
        
        @Test
        void shouldReturnArray() throws IOException {
            //given
            String name = "pjhyett";
            //when
            User[] resultArray = userService.fetchUserByStarsAscendingOrder(name);
            //then
            assertThat(resultArray[0]).isEqualTo(aUser);
        }

        @BeforeEach
        void setUp() {
            aUser = new User();
            aUser.setFull_name("pjhyett/github-services");
            aUser.setDescription("Moved to http://github.com/github/github-services");
            aUser.setClone_url("https://github.com/pjhyett/github-services.git");
            aUser.setStars(408);
            aUser.setCreatedAt("2008-04-28T23:41:21Z");
        }

以上所有数据均取自GitHub接口,并与公共回购有关。我要访问数组中的第一个元素,因为该方法返回了数组的几个结果。

IDE告诉我,在API本身中完美工作的方法...在测试类中返回null。

为什么会这样呢?

EN

回答 1

Stack Overflow用户

发布于 2021-04-07 14:50:01

在初始化方法中实例化 UserService

你会得到NPE,因为UserService从未被实例化过。考虑实例化setUp()方法中的变量。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66970226

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档