使用浓缩咖啡运行特定测试

时间:2013-12-30 18:11:30

标签: gradle android-testing android-espresso

我目前正在通过命令运行我的测试

  

gradle app:connectedCheck

这很好用,但是当我的测试正在建立时,我不想在我尝试创建它时完成所有这些测试。有谁知道如何运行我的一个测试?提前致谢。

3 个答案:

答案 0 :(得分:4)

这是我在MariusVolkhart的帮助下做的详细解决方案:

将此添加到您的build.gradle

spoon {
     if (project.hasProperty('spoonClassName')){
         className = project.spoonClassName
      }
}

现在,您可以使用如下命令执行特定的类:

  

gradle spoon -PspoonClassName =< com.your.pakage.ClassName>


多数民众赞成!

但是,如果要运行一系列特定测试,请在Android项目的根目录下创建一个文件:runAllTests.sh。该脚本将包含要运行的测试命令。

修改您的.sh,如下所示:

 #!/bin/sh
 date +%b-%dT%H.%M > timestamp.out

 sites="$HOME"/path/to/project/root

 timestamp="$(cat "$sites"/timestamp.out)"
 result_folder="$sites"/results
 destdir="$result_folder/Results-$timestamp"

 mkdir -p "$destdir"
 echo "Directory created: ${destdir##*/}"

 <---------- Here you start running the test --------------->

 echo "Starting Master Setup"
 gradle spoon -PspoonClassName=com.espresso.test.MasterSetup
 cp -r "$sites"/app/build/spoon "$destdir"/MasterSetup
 echo "Results saved to MasterSetup"

 echo "Starting WorkoutSchedule"
 gradle spoon -PspoonClassName=com.espresso.test.WorkoutSchedule
 cp -f "$sites"/app/build/spoon "$destdir"/WorkoutSchedule
 echo "Results saved to WorkoutSchedule"

 echo "Starting Setting.test"
 gradle spoon -PspoonClassName=com.espresso.test.Settings
 cp -r "$sites"/app/build/spoon "$destdir"/Settings
 echo "Results saved to Settings"

然后,提供脚本权限  1. cd脚本  2.键入chmod u+x runAllTest.sh

您已设置。现在只需cd到您的根目录,然后执行测试,请输入. runAllTest.sh

所以,这样做:

  1. 首先,它创建一个timestamp.out。我使用这个,所以我可以反复将结果保存到文件中,而不会覆盖之前的结果。你不需要这个部分。
  2. 接下来,它会在项目的根目录中创建一个result文件夹(如果它尚不存在)。
  3. 然后,它将在名为Results-SOME-DATE的结果文件夹中创建一个文件夹。
  4. 最后,每个测试都会运行,将结果保存到项目的正常位置。 (内部构建/勺子)一旦测试完成,它将结果复制到结果文件夹,并适当地命名每个测试结果,以便很容易看到所有测试都运行。
  5. 注意:此脚本是为MAC编写的。如果你的窗口或其他任何东西,这个脚本可能需要修改。


    此外:您会发现打开每个文件夹以打开index.html会很不方便。所以我写了这个脚本来添加到你的bash_profile

    function open-results () {
      # the browser to open up `index.html' in.
      browser='/Applications/Google Chrome.app/Contents/MacOS/Google Chrome'
    
      # let the user know what directory we're looking in
      printf "looking in %s" "$(pwd)"
      echo ...
    
      for paths in $(find ./ -name 'debug' -type d); do
        for files in $(find "$paths" -name 'index.html'); do
         open -a "$browser" "$files"
        done
      done
      echo done
     } 
    

    现在,cd位于Results-SOME-DATE的终端,并输入open-results。再次,这是为终端写的。您可能需要根据您的操作系统进行修改。但结构应该是相同的

    我希望这会有所帮助。

答案 1 :(得分:2)

非常确定connectedCheck只运行所有测试。

您可能需要查看Spoon,它可以让您指定要执行的类和方法。

有一个插件将Spoon与Gradle here集成在一起。

答案 2 :(得分:0)

您可以通过以下步骤测试Espresso测试的特定方法: 1)打开Espresso测试类(使用Android Studio) 2)转到Structure窗口(位于Android Studio的左侧) 3)选择您想要运行的特定测试方法 4)右键单击,然后选择“运行...”

我希望这会有所帮助。