单元测试类实例变为null

时间:2016-08-03 09:13:43

标签: android android-testing

我正在为名为Card的班级进行单元测试

public class Card{
private KeyStore kestore;
private Cipher cipher;

public Card(){
}

public void generateRandom(){
            keyStore = KeyStore.getInstance("AndroidKeyStore");

        keyGenerator = KeyGenerator.getInstance(KeyProperties.KEY_ALGORITHM_AES, "AndroidKeyStore");

        keyStore.load(null);
        keyGenerator.init(new
                KeyGenParameterSpec.Builder(KEY_NAME,
                KeyProperties.PURPOSE_ENCRYPT |
                        KeyProperties.PURPOSE_DECRYPT)
                .setBlockModes(KeyProperties.BLOCK_MODE_CBC)
                .setUserAuthenticationRequired(true)
                .setEncryptionPaddings(
                        KeyProperties.ENCRYPTION_PADDING_PKCS7)
                .build());
        keyGenerator.generateKey();
}

public void init(){
        cipher = Cipher.getInstance(
                KeyProperties.KEY_ALGORITHM_AES + "/"
                        + KeyProperties.BLOCK_MODE_CBC + "/"
                        + KeyProperties.ENCRYPTION_PADDING_PKCS7);

        keyStore.load(null);
        SecretKey key = (SecretKey) keyStore.getKey(KEY_NAME,
                null);
        cipher.init(Cipher.ENCRYPT_MODE, key);
}
} 

以下是我的单元测试编码。

    public class cardTest extends AndroidTestCase{
    Card card;

        @Override
        protected void setUp() throws Exception {
            super.setUp();
            card = new Card();
        }

        @Override
        protected void tearDown() throws Exception {
            super.tearDown();
        }

        public class testgenerateRandom(){
            card.generateRandom();
        }

        public class testinit(){
            card.init();
        }
    }

所以在上面的单元测试中,

testinit()将调用Card类的init。 keystore变为null。我已经在generateRandom()中初始化了密钥库,这是第一个测试用例。

每当第一个测试用例(testgenerateRandom())完成时,卡实例变为空。以便密钥库也变为空

为什么卡实例变为空?能帮到我吗?

1 个答案:

答案 0 :(得分:3)

请记住,JUnit会为其运行的每个测试方法创建$scope.dataParsed = angular.fromJson(prdData); angular.forEach($scope.dataParsed , function(item , i) { angular.forEach(item.kolory , function(item , i) { wszystkieKolory.push(item); }); }); $scope.unikalneKolory = $.unique(wszystkieKolory); $scope.checkColors = function(){ $scope.$watch('kolorEnd' , function(oldv,newv) { $scope.kolory = oldv.toString(); }); }; frost.filter('colorsFlt' , function(){ return function(data,inpArray) { var output = []; if (angular.isArray(inpArray)) { } } 类的新实例,这意味着在cardTest之前不会调用testgenerateRandom()期望,两种方法都将使用testinit()的不同实例。确保在Card中针对每种测试方法正确配置测试中的实例。