我正在为名为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())完成时,卡实例变为空。以便密钥库也变为空
为什么卡实例变为空?能帮到我吗?
答案 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
中针对每种测试方法正确配置测试中的实例。