diff --git a/Testing/CMakeLists.txt b/Testing/CMakeLists.txt
index 8d63be9d90ed3717a27c0534aed33346e3e8b24d..f547e6c40c082f2871e715545033ee543e7beefa 100644
--- a/Testing/CMakeLists.txt
+++ b/Testing/CMakeLists.txt
@@ -22,6 +22,7 @@ SET( otbHyperTests1_SRC
   otbHorizontalSobelVectorImageFilter.cxx
   otbVerticalSobelVectorImageFilter.cxx
   otbSobelVectorImageFilter.cxx
+  otbLocalGradientVectorImageFilter.cxx
   otbLocalActivityVectorImageFilter.cxx
   otbNormalizeVectorImageFilter.cxx
   otbPCAImageFilter.cxx
@@ -380,6 +381,16 @@ ADD_TEST(bfTvSobelVectorImageFilter
 		 -in ${DATA}/CupriteSubHsi/cupriteSubHsi.tif 
 		 -out ${TEMP}/cupriteSobelFlt.hdr)
 
+ADD_TEST(bfTuLocalGradientVectorImageFilterNew
+         ${TESTEXE_DIR}/otbHyperTests1
+         otbLocalGradientVectorImageFilterNewTest)
+
+ADD_TEST(bfTvLocalGradientVectorImageFilter
+         ${TESTEXE_DIR}/otbHyperTests1
+         otbLocalGradientVectorImageFilterTest
+		 -in ${DATA}/CupriteSubHsi/cupriteSubHsi.tif 
+		 -out ${TEMP}/cupriteLocalGradientFlt.hdr)
+
 ADD_TEST(bfTuLocalActivityVectorImageFilterNew
          ${TESTEXE_DIR}/otbHyperTests1
          otbLocalActivityVectorImageFilterNewTest)
diff --git a/Testing/otbHyperTests1.cxx b/Testing/otbHyperTests1.cxx
index ec22a5adc26d57af527e081964bb9551a35e9328..1eff9da7fef68c4cd02fe201e5d5b1804b03938a 100644
--- a/Testing/otbHyperTests1.cxx
+++ b/Testing/otbHyperTests1.cxx
@@ -55,6 +55,8 @@ void RegisterTests()
   REGISTER_TEST(otbVerticalSobelVectorImageFilterTest);
   REGISTER_TEST(otbSobelVectorImageFilterNewTest);
   REGISTER_TEST(otbSobelVectorImageFilterTest);
+  REGISTER_TEST(otbLocalGradientVectorImageFilterNewTest);
+  REGISTER_TEST(otbLocalGradientVectorImageFilterTest);
   REGISTER_TEST(otbLocalActivityVectorImageFilterNewTest);
   REGISTER_TEST(otbLocalActivityVectorImageFilterTest);
   REGISTER_TEST(otbNormalizeVectorImageFilterNewTest);
diff --git a/Testing/otbLocalGradientVectorImageFilter.cxx b/Testing/otbLocalGradientVectorImageFilter.cxx
new file mode 100644
index 0000000000000000000000000000000000000000..6d08220d5a5be6d70c8d3bef79242e2b35f94536
--- /dev/null
+++ b/Testing/otbLocalGradientVectorImageFilter.cxx
@@ -0,0 +1,100 @@
+/*=========================================================================
+
+  Program:   ORFEO Toolbox
+  Language:  C++
+  Date:      $Date$
+  Version:   $Revision$
+
+
+  Copyright (c) Centre National d'Etudes Spatiales. All rights reserved.
+  See OTBCopyright.txt for details.
+
+  Copyright (c) Institut Telecom ; Telecom Bretagne. All rights reserved. 
+  See ITCopyright.txt for details.
+
+     This software is distributed WITHOUT ANY WARRANTY; without even 
+     the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 
+     PURPOSE.  See the above copyright notices for more information.
+
+=========================================================================*/
+
+#include "otbVectorImage.h"
+#include "otbImageFileReader.h"
+#include "otbImageFileWriter.h"
+#include "otbCommandProgressUpdate.h"
+#include "otbCommandLineArgumentParser.h"
+
+#include "otbLocalGradientVectorImageFilter.h"
+
+int otbLocalGradientVectorImageFilterNewTest ( int argc, char * argv[] )
+{
+  const unsigned int Dimension = 2;
+  typedef double PixelType;
+  typedef otb::VectorImage< PixelType, Dimension > ImageType;
+   typedef otb::LocalGradientVectorImageFilter< ImageType, ImageType >
+    FilterType;
+  FilterType::Pointer filter = FilterType::New();
+  std::cout << filter << std::endl;
+  return EXIT_SUCCESS;
+}
+
+int otbLocalGradientVectorImageFilterTest ( int argc, char* argv[] )
+{
+  typedef otb::CommandLineArgumentParser ParserType;
+  ParserType::Pointer parser = ParserType::New();
+
+  parser->AddInputImage();
+  parser->AddOutputImage();
+
+  typedef otb::CommandLineArgumentParseResult ParserResultType;  
+  ParserResultType::Pointer  parseResult = ParserResultType::New();
+    
+  try
+  {  
+    parser->ParseCommandLine( argc, argv, parseResult );
+  }
+  catch( itk::ExceptionObject & err )
+  {
+    std::cerr << argv[0] << " performs horizonal sobel on a vector image\n";
+    std::string descriptionException = err.GetDescription();
+    if ( descriptionException.find("ParseCommandLine(): Help Parser")
+        != std::string::npos )
+      return EXIT_SUCCESS;
+    if(descriptionException.find("ParseCommandLine(): Version Parser")
+        != std::string::npos )
+      return EXIT_SUCCESS;
+    return EXIT_FAILURE;
+  }
+
+  const char * inputImageName = parseResult->GetInputImage().c_str();
+  const char * outputImageName = parseResult->GetOutputImage().c_str();
+
+  // Main type definition
+  const unsigned int Dimension = 2;
+  typedef double PixelType;
+  typedef otb::VectorImage< PixelType, Dimension > ImageType;
+
+  // Reading input images
+  typedef otb::ImageFileReader<ImageType> ReaderType;
+  ReaderType::Pointer reader = ReaderType::New();
+  reader->SetFileName(inputImageName);
+
+  // Image filtering
+  typedef otb::LocalGradientVectorImageFilter< ImageType, ImageType >
+    FilterType;
+  FilterType::Pointer filter = FilterType::New();
+  filter->SetInput( reader->GetOutput() );
+
+  typedef otb::CommandProgressUpdate< FilterType > CommandType;
+  CommandType::Pointer observer = CommandType::New();
+  filter->AddObserver( itk::ProgressEvent(), observer );
+
+  typedef otb::ImageFileWriter< ImageType > ImageWriterType;
+  ImageWriterType::Pointer writer = ImageWriterType::New();
+  writer->SetFileName( outputImageName );
+  writer->SetInput( filter->GetOutput() );
+  writer->Update();
+
+  return EXIT_SUCCESS;
+}
+