Solving constrained multi-objective optimization problems (CMOPs) is challenging due to the simultaneous consideration of multiple conflicting objectives that need to be optimized and complex constraints that need to be satisfied. To address this class of problems, a large number of constrained multi-objective evolutionary algorithms (CMOEAs) have been designed. This paper presents a comprehensive review of state-of-the-art algorithms for solving CMOPs. First, the background knowledge and concepts of evolutionary constrained multi-objective optimization are presented. Then, some classic constraint handling technologies (CHTs) are introduced, and the advantages and limitations of each CHT are discussed. Subsequently, based on the mechanisms used by these algorithms, the CMOEAs are classified into six categories, each of which is explained in detail. Following that, the benchmark test problems used to evaluate the algorithm’s performance are reviewed. Moreover, the experimental comparison and performance analysis of different types of algorithms are carried out on different test problems with different characteristics. Finally, some of the challenges and future research directions in evolutionary constrained multi-objective optimization are discussed.