0

私は単体テストがまったく初めてで、モックオブジェクトに関するチュートリアルを経験しました。簡単なログイン ソース コードをテストしようとしましたが、適切な単体テスト コードを作成できませんでした。間違ったユーザー名、正しいパスワード、正しいユーザー名と間違ったパスワードに対してテストしたい場合は、誰か助けてください:

    package com.isyn.testsetup;

    public interface ApplicationUserService {

        public ApplicationUser findByUserName(String userName);
    }

    package com.isyn.testsetup;

    public class ApplicationUser {

    private String userName;
    private String password;

    public ApplicationUser(String userName, String password) {
        this.userName = userName;
        this.password = password;

    }

    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    }
    package com.isyn.testsetup;

    public class LoginUser {

        private ApplicationUserService applicationUserService;

    public LoginUser(ApplicationUserService applicationUserService) {

        this.applicationUserService = applicationUserService;
    }

    public boolean validateCredentials(String userName, String password) {

        boolean validationResult = false;

        try {
        ApplicationUser applicationUser = applicationUserService.findByUserName(userName);
        if (applicationUser.getPassword().equals(password)) {
            validationResult = true;
        }
        }
        catch (Exception e) {
            e.printStackTrace();
        }

        return validationResult;
    }
}

有効なユーザー向けのこのテストケースを思いつきました:

package com.isyn.testsetup;

import static org.easymock.EasyMock.eq;
import static org.easymock.EasyMock.expect;
import static org.easymock.EasyMock.replay;
import junit.framework.TestCase;

import org.easymock.EasyMock;
import org.junit.Before;
import org.junit.Test;

public class TestLogIn extends TestCase{

    private ApplicationUser applicationUser;
    private ApplicationUserService mockUserServiceObj;

    @Before
    public void setup() {
        mockUserServiceObj = EasyMock.createMock(ApplicationUserService.class);
        applicationUser = new ApplicationUser("gooduser", "goodpassword");

    }

    @Test
    public void test() {
        setup();

        expect(mockUserServiceObj.findByUserName(eq("gooduser"))).andReturn(applicationUser);
        replay(mockUserServiceObj);
        LoginUser testUser = new LoginUser(mockUserServiceObj);

        boolean checkStatus = testUser.validateCredentials("gooduser", "goodpassword");
        assertTrue(checkStatus);


        }
}

間違った資格情報で確認したかったのですが、予期しないメソッド呼び出しが表示されるため、機能するかどうかわかりません!

Need Help!
4

1 に答える 1

0

テスト ケースを実行しましたが、問題なく実行されます。表示されている正確なエラー メッセージは何ですか?

いくつかのメモ:

  1. テスト クラスは TestCase を拡張しますが、JUnit 4 ではその必要はありません。テスト メソッドに注釈を追加するだけです。
  2. test() メソッドで setup() を呼び出しますが、@Before を setup() に追加したため、JUnit は @Test を持つ各メソッドを呼び出す前にそれを呼び出します
于 2014-10-02T16:22:39.430 に答える