使用grunt构建测试框架

时间:2014-07-07 06:13:21

标签: angularjs unit-testing gruntjs karma-runner

我正在使用grunt构建我的angularjs应用程序。我使用karma为我的应用程序创建了单元测试套件。我正在尝试为我的应用程序设置持续集成。在Jenkins中进行CI之前,我试图使用grunt在本地构建

1.将app文件夹中的所有文件复制到dist(通常由grunt task'grunt build'完成) 2.run单元测试dist文件夹。 3.Build Artifacts。

我正在寻找示例项目,并且找不到任何关于构建测试套件以及使用grunt的应用程序?任何参考帮助都会很棒。

在使用grunt构建应用程序时,我们是否必须在dist文件夹或本地app文件夹上运行测试? karma.conf.js文件应该进入dist文件夹吗?

 grunt.registerTask('test', [
    'clean:server',
    'concurrent:test',
    'autoprefixer',
    'connect:livereload',        
    'karma:continuous',
    'apimocker',    
    'protractor:run'
]);
 ###   Project structure;

myProject的     |     | --app
    | | --bower_components     | | --scripts     |     | --dist
    | | --bower_components     | | --scripts     |     | --node_modules     |
    | --test     | | --specs     |     | --gruntfile.js     |     | --karma.conf.js

grunt.registerTask('CI', [        
     'clean:dist',
     'useminPrepare',
     'concurrent:dist',
     'autoprefixer',
     'concat',
     'ngmin',
     'copy:dist',
     'cdnify',
     'cssmin',
     'rev',
     'usemin',
     'test',
     'buildArtifacts'
]);

  module.exports = function (config) {
  config.set({
        basePath: '',
        frameworks: ['jasmine', 'requirejs'],
        files: [
            {pattern: 'app/bower_components/jquery/dist/jquery.js', included: false},
            {pattern: 'app/bower_components/angular/angular.js', included: false},
            {pattern: 'app/bower_components/angular-mocks/angular-mocks.js', included: false},
            {pattern: 'app/bower_components/jasmine/lib/jasmine-core/jasmine.js', included: false},
            {pattern: 'app/bower_components/jasmine-jquery/lib/jasmine-jquery.js', included: false},
            {pattern: 'app/scripts/*.js', included: false},
            {pattern: 'app/scripts/**/*.js', included: false},
            {pattern: 'test/**/*Spec.js', included: false},
            {pattern: 'test/test-main.js', included: true}, 

        ],            
        exclude: [
            'app/scripts/main.js',
            'app/scripts/*min.js',
            'app/scripts/**/*min.js'
        ],
        preprocessors: {},
        reporters: ['progress'],
        port: 9876,
        colors: true,
        logLevel: config.LOG_INFO,
        autoWatch: true,
        browsers: ['Chrome'],
        plugins: [
            'karma-chrome-launcher',              
            'karma-script-launcher',
            'karma-jasmine',
            'karma-requirejs'
        ],
        singleRun: false
    }
);
};

1 个答案:

答案 0 :(得分:1)

单元测试需要引用我们将要测试的所有应用程序代码以及我们将要编写的所有测试。

  • 测试框架(选择一个):
  

Jasmine(默认),Mocha,QUnit

  • 任何供应商要求的代码
  • 我们的应用专用代码
  • 我们的测试代码
  • angular-mocks.js用于模拟的库

    我们的应用程序专用代码必须是dist文件夹的原始文件输出(例如all.js)

例如,示例单元测试Karma配置文件可能如下所示(注释已删除 为简单起见:

module.exports = function(config) {
config.set({
basePath: '..',
frameworks: ['jasmine'],
files: [
  'lib/angular.js',
  'lib/angular-route.js',
  'test/lib/angular-mocks.js',
  'js/**/*.js',
  'test/unit/**/*.js'
],
exclude: [],
port: 8080,
logLevel: config.LOG_INFO,
autoWatch: true,
browsers: ['Safari'],
singleRun: false
});
};

如果您使用单个文件输出所有js文件,例如您将所有文件连接到一个文件,例如all.js,那么您的配置必须如下所示

files: [
  'lib/angular.js',
  'lib/angular-route.js',
  'test/lib/angular-mocks.js',
  'js/all.js',
  'test/unit/**/*.js'
],